django-signalqueue

Skjermbilde programvare:
django-signalqueue
Prog.varedetaljer:
Versjon: 0.5.1
Last opp dato: 20 Feb 15
Utvikler: Alexander Bohn
Lisens: Gratis
Popularitet: 7

Rating: 3.0/5 (Total Votes: 1)

Etter en viss tid noen om seg med Django rammeverk kommer til å stille spørsmålet: Jeg elsker Django signaler, faktisk. Men hvis jeg bare kunne sende dem asynkront. Lignende, på en annen tråd eller noe, jeg vet egentlig ikke .... Er det liksom mulig?
Vel, nå kan du enkelt gjøre det med django-signalqueue.
Watch, skal jeg vise deg. Først installerer Django-signalqueue:
$ Pip installere django-signalqueue # dette vil installere tornado og django-delegat om nødvendig
... Du kan også være lurt noen av disse valgfrie pakker, hvis du ikke har dem allerede:
$ Brygge installere Redis yajl # s / brygge / apt-get / til smak
$ PIP installere Redis hiredis # anbefales
$ Pip installere ujson # anbefales
$ Pip installere czjson yajl simplejson # disse fungerer også
$ PIP installere nese django-nese # for testene
Legg django-signalqueue til din INSTALLED_APPS, og innstillingene for en kø, mens du er i din settings.py:
# Settings.py
INSTALLED_APPS = [
& Nbsp; 'signalqueue', # ...
]
SQ_QUEUES = {
& Nbsp; «standard»: {# du trenger minst én dict heter «standard» i SQ_QUEUES
& Nbsp; 'NAME': 'signalqueue_default', # valgfritt - standard til signalqueue_default '
& Nbsp; 'MOTOR': 'signalqueue.worker.backends.RedisSetQueue', # nødvendig - er dette din køen driver
& Nbsp; 'Intervall': 30, # 1/3 sek
& Nbsp; Alternativer: dict (),
& Nbsp;}
}
SQ_RUNMODE = 'SQ_ASYNC_REQUEST' # bruk async utsendelse som standard
SQ_WORKER_PORT = 11231 # porten køen arbeidsprosessen vil binde seg til
Tillegg til alt dette, du trenger bare en samtale for å signalqueue.autodiscover () i din root URLConf:
# Urls.py
import signalqueue
signalqueue.autodiscover ()
Du kan definere async signaler!
Asynkrone signaler er tilfeller av signalqueue.dispatch.AsyncSignal som du har definert i en av følgende steder:
- Your_app / signals.py (det er greit hvis du allerede bruker denne filen, som mange gjør)
- Moduler navngitt i en settings.SQ_ADDITIONAL_SIGNALS liste eller tuppel
- Kommer snart: signalqueue.register () - slik at du kan sette dem andre steder.
AsyncSignals er definert mye som de kjente forekomstene av django.dispatch.Signal du kjenner og elsker:
# Yourapp / signals.py
fra signalqueue.dispatch import AsyncSignal
fra signalqueue.mappings importere ModelInstanceMap
# Disse to konstruktører gjøre det samme
my_signal = AsyncSignal (providing_args = ['eksempel']) # den Yuge
my_other_signal = AsyncSignal (providing_args = {'eksempel': ModelInstanceMap}) # med kartlegginger
# Hva som følger kan gå hvor som helst - bare de tilfeller trenger å være i yourapp / signals.py:
def tilbakeringing (avsender, ** kwargs):
& Nbsp; print "I,% s, er herved sendt asynkront av% s, takket være django-signalqueue." % (
& Nbsp; str (kwargs ['eksempel']),
& Nbsp; avsender .__ name__)
my_signal.connect (tilbakeringing)
... Den største forskjellen er den andre definisjonen, som spesifiserer providing_args som en dict med kartlegging klasser i stedet for en vanlig liste. Vi skal forklare kartlegging klasser senere, men hvis du passerer Django modell tilfeller til dine signaler, trenger du ikke å bekymre deg for dette.
Når arbeidstakeren er i gang, kan du sende signalet til køen som så:
>>> My_signal.send (avsender = AModelClass, eksempel = a_model_instance)
Å skyte din signal som en normal Django signal, kan du gjøre dette:
>>> My_signal.send_now (avsender = AModelClass, eksempel = a_model_instance)
Tune i morgen for den forbløffende konklusjonen av ... Django-signalqueue README !!!!!!

Krav :

  • Python
  • Django

Annen programvare fra utvikleren Alexander Bohn

dwight
dwight

14 Apr 15

django-delegate
django-delegate

15 Apr 15

hdf5-django
hdf5-django

20 Feb 15

Kommentarer til django-signalqueue

Kommentarer ikke funnet
Legg til kommentar
Slå på bilder!