django-signalqueue

Software screenshot:
django-signalqueue
Software detaljer:
Version: 0.5.1
Upload dato: 20 Feb 15
Udvikler: Alexander Bohn
Licens: Gratis
Popularitet: 7

Rating: 3.0/5 (Total Votes: 1)

Efter en vis tid nogen om sig med Django ramme kommer til at stille spørgsmålet: Jeg elsker Django signaler, ja. Men hvis bare jeg kunne afsende dem asynkront. Gerne på en anden tråd eller noget, jeg ved ikke rigtig .... Er det en eller anden måde muligt?
Nå, nu kan du nemt gøre det med Django-signalqueue.
Watch, jeg vil vise dig. Først skal du installere Django-signalqueue:
$ Pip installere django-signalqueue # Dette vil installere tornado og django-delegeret, hvis nødvendigt
... Du kan også vælge nogle af disse valgfrie pakker, hvis du ikke har dem allerede:
$ Bryg installere Redis yajl # s / bryg / apt-get / til smag
$ Pip installere Redis hiredis # anbefalet
$ Pip installere ujson # anbefales
$ Pip installere czjson yajl simplejson # disse arbejde for
$ Pip installere næse django-næse # for prøverne
Tilføj django-signalqueue til din INSTALLED_APPS, og indstillingerne til en kø, mens du er i din settings.py:
# Settings.py
INSTALLED_APPS = [
& Nbsp; "signalqueue«, # ...
]
SQ_QUEUES = {
& Nbsp; "misligholdelse": {# du har brug for mindst en dict navnet 'standard' i SQ_QUEUES
& Nbsp; "NAME": "signalqueue_default", # valgfri - standard 'signalqueue_default'
& Nbsp; "motor": "signalqueue.worker.backends.RedisSetQueue", # påkrævet - dette er din kø driver
& Nbsp; "INTERVAL": 30, # 1/3 sek
& Nbsp; "MULIGHEDER: Dict (),
& Nbsp;},
}
SQ_RUNMODE = 'SQ_ASYNC_REQUEST' # brug async afsendelse som standard
SQ_WORKER_PORT = 11231 # porten din kø arbejdstager proces vil binde til
Udover alt dette, skal du blot et kald til signalqueue.autodiscover () i din root URLConf:
# Urls.py
import signalqueue
signalqueue.autodiscover ()
Du kan definere async signaler!
Asynkrone signaler er forekomster af signalqueue.dispatch.AsyncSignal, som du har defineret i et af følgende steder:
- Your_app / signals.py (det er fint, hvis du allerede anvender denne fil, som mange gør)
- Moduler nævnt i en settings.SQ_ADDITIONAL_SIGNALS liste eller tupel
- Kommer snart: signalqueue.register () - så du kan sætte dem andre steder.
AsyncSignals defineres meget gerne de velkendte forekomster af django.dispatch.Signal du kender og elsker:
# Yourapp / signals.py
fra signalqueue.dispatch import AsyncSignal
fra signalqueue.mappings importerer ModelInstanceMap
# Disse to konstruktører gøre det samme
my_signal = AsyncSignal (providing_args = ['eksempel']) # af Yuge
my_other_signal = AsyncSignal (providing_args = {"instans": ModelInstanceMap}) # med kortlægninger
# Det følgende kan gå nogen steder - kun de tilfælde skal være i yourapp / signals.py:
def tilbagekald (afsender, ** kwargs):
& Nbsp; print "I,% s, er hermed sendt asynkront med% s, takket være Django-signalqueue." % (
& Nbsp; str (kwargs ['eksempel']),
& Nbsp; afsender .__ name__)
my_signal.connect (tilbagekald)
... Den største forskel er den anden definition, som angiver providing_args som dict med kortlægning klasser i stedet for en almindelig liste. Vi vil forklare kortlægning klasser senere, men hvis du passerer Django model forekomster til dine signaler, behøver du ikke at bekymre dig om dette.
Når arbejdstageren kører, kan du sende det signal til køen som så:
>>> My_signal.send (afsender = AModelClass, fx = a_model_instance)
For at fyre din signal som en normal Django signal, kan du gøre dette:
>>> My_signal.send_now (afsender = AModelClass, fx = a_model_instance)
Stil ind på i morgen for den forbløffende konklusion ... Django-signalqueue README !!!!!!

Krav :

  • Python
  • Django

Andre software developer Alexander Bohn

h5dj
h5dj

20 Feb 15

hdf5-django
hdf5-django

20 Feb 15

django-delegate
django-delegate

15 Apr 15

Kommentarer til django-signalqueue

Kommentarer ikke fundet
Tilføj kommentar
Tænd billeder!