django-signalqueue

Screenshot Software:
django-signalqueue
Detalii soft:
Versiune: 0.5.1
Incarca data: 20 Feb 15
Producător: Alexander Bohn
Licenţă: Gratuit
Popularitate: 7

Rating: 3.0/5 (Total Votes: 1)

După o anumită perioadă de timp oricine se cu privire cadrul Django este de gând să punem întrebarea: Îmi place semnale Django lui, într-adevăr. Dar dacă aș putea să le expediem asincron. Cum ar fi, pe un alt fir sau ceva, eu nu știu cu adevărat .... Este cumva posibil?
Ei bine, acum puteți face cu ușurință că cu django-signalqueue.
Uita-te, să-ți arăt. În primul rând, instalați django-signalqueue:
$ Pip instala django-signalqueue # aceasta va instala tornadă și django-delegat, dacă este necesar
... S-ar putea dori, de asemenea, unele dintre aceste pachete opționale, dacă nu le au deja:
$ Infuzie instala redis yajl # s / infuzie / apt-get / gust
$ PIP instala redis hiredis # recomandat
$ Pip instala ujson # recomandat
$ Pip instala czjson yajl simplejson # aceste lucru prea
$ Pip instala nas-django nas # pentru testele
Adaugă django-signalqueue pentru INSTALLED_APPS dumneavoastră, și setările pentru o coadă, în timp ce vă aflați în settings.py dumneavoastră:
# Settings.py
INSTALLED_APPS = [
& Nbsp; "signalqueue", # ...
]
SQ_QUEUES = {
& Nbsp; "default": {# ai nevoie de cel puțin un dict numit "default" în SQ_QUEUES
& Nbsp; "NAME": "signalqueue_default", # optional - implicit "signalqueue_default"
& Nbsp; "motor": "signalqueue.worker.backends.RedisSetQueue", # necesar - aceasta este driver coada tău
& Nbsp; "INTERVAL": 30, # 1/3 sec
& Nbsp; "Opțiuni": dict (),
& Nbsp;},
}
SQ_RUNMODE = 'SQ_ASYNC_REQUEST' # utilizare asincron expediere implicit
SQ_WORKER_PORT = 11231 # portul procesul de lucrător coada va lega la
Pe langa toate acestea, ai nevoie doar de un apel la signalqueue.autodiscover () în URLConf de root:
# Urls.py
signalqueue import
signalqueue.autodiscover ()
Puteți defini semnale asincron!
Semnale asincrone sunt cazuri de signalqueue.dispatch.AsyncSignal care le-ați definit în una din următoarele locuri:
- Your_app / signals.py (e bine dacă utilizați deja acest fișier, cum fac mulți)
- Module cu numele de pe o listă settings.SQ_ADDITIONAL_SIGNALS sau tuplu
- În curând: signalqueue.register () - pentru a le putea pune în altă parte.
AsyncSignals sunt definite mult ca instanțele familiare ale django.dispatch.Signal pe care le cunoașteți și dragoste:
# Yourapp / signals.py
de la signalqueue.dispatch AsyncSignal import
de la signalqueue.mappings import ModelInstanceMap
# Aceste două constructori fac același lucru
my_signal = AsyncSignal (providing_args = ['exemplu']) # Yuge
my_other_signal = AsyncSignal (providing_args = {'exemplu': ModelInstanceMap}) # cu mapări
# Ceea ce urmează poate merge oriunde - doar instanțele trebuie să fie în yourapp / signals.py:
def apel invers (expeditor, ** kwargs):
& Nbsp; de imprimare "Eu,% s, au fost expediate după asincron cu% s, datorită django-signalqueue." % (
& Nbsp; str (kwargs ['exemplu']),
& Nbsp; expeditor .__ name__)
my_signal.connect (callback)
... Principala diferență este al doilea definiție, care specifică providing_args ca un dict cu clasele de cartografiere în loc de o listă de simplu. Vom explica cursuri de cartografiere mai târziu, dar dacă se trece Django instanțe de model la semnalele, nu trebuie să vă faceți griji cu privire la acest lucru.
Odată ce lucrătorul se execută, puteți trimite semnalul la coada astfel:
>>> My_signal.send (expeditor = AModelClass, de exemplu = a_model_instance)
Pentru a trage semnalul ca un semnal obișnuit Django, puteți face acest lucru:
>>> My_signal.send_now (expeditor = AModelClass, de exemplu = a_model_instance)
Tune în ziua de mâine pentru încheierea uimitoare a ... README-Django signalqueue !!!!!!

Cerințe :

  • Python
  • Django

Alte software-uri de dezvoltator Alexander Bohn

django-delegate
django-delegate

15 Apr 15

h5dj
h5dj

20 Feb 15

hdf5-django
hdf5-django

20 Feb 15

Comentarii la django-signalqueue

Comentariile nu a fost găsit
Adauga comentarii
Porniţi pe imagini!