django-signalqueue

Software screenshot:
django-signalqueue
Dettagli del software:
Versione: 0.5.1
Data di caricamento: 20 Feb 15
Sviluppatore: Alexander Bohn
Licenza: Libero
Popolarità: 7

Rating: 3.0/5 (Total Votes: 1)

Dopo un certo periodo di tempo nessuno si relativa al quadro Django sta per porre la domanda: io amo i segnali di Django, anzi. Ma se solo potessi inviare loro in modo asincrono. Come, su qualche altro thread o qualcosa del genere, io non lo so .... è che in qualche modo possibile?
Bene, ora si può facilmente farlo con django-signalqueue.
Guarda, ti faccio vedere. In primo luogo, installare django-signalqueue:
$ Pip install django-signalqueue # questo installerà tornado e django-delegato, se necessario
... Si potrebbe anche voler alcuni di questi pacchetti opzionali, se non li avete già:
$ Brew install Redis yajl # s / brew / apt-get / qb
$ Pip installare Redis hiredis # raccomandato
$ Pip install ujson # consigliato
$ Pip installare czjson yajl simplejson # questi lavori troppo
$ Pip installare naso django-nose # per le prove
Aggiungi django-signalqueue al INSTALLED_APPS, e le impostazioni per una coda, mentre sei in settings.py:
# Settings.py
INSTALLED_APPS = [
& Nbsp; 'signalqueue', # ...
]
SQ_QUEUES = {
& Nbsp; 'default': {# avete bisogno almeno di un dict nome 'default' in SQ_QUEUES
& Nbsp; 'NOME': 'signalqueue_default', # opzionale - il default 'signalqueue_default'
& Nbsp; 'ENGINE': 'signalqueue.worker.backends.RedisSetQueue', # richiesta - questo è il driver della coda
& Nbsp; 'INTERVALLO': 30, # 1/3 sec
& Nbsp; "OPZIONI": dict (),
& Nbsp;},
}
SQ_RUNMODE = 'SQ_ASYNC_REQUEST' # uso async spedizione di default
SQ_WORKER_PORT = 11231 # porto il tuo processo di lavoro code si legherà
Oltre a tutto questo, basta una chiamata a signalqueue.autodiscover () nella URLConf root:
# Urls.py
import signalqueue
signalqueue.autodiscover ()
E 'possibile definire i segnali asincroni!
Segnali asincroni sono istanze di signalqueue.dispatch.AsyncSignal che avete definito in uno dei seguenti luoghi:
- Your_app / signals.py (va bene se si utilizza già questo file, come molti lo fanno)
- Moduli di nome in un elenco settings.SQ_ADDITIONAL_SIGNALS o tuple
- Prossimamente: signalqueue.register () - in modo da poter metterli altrove.
AsyncSignals sono definite molto come le istanze familiari di django.dispatch.Signal che conosci e ami:
# Yourapp / signals.py
da signalqueue.dispatch import AsyncSignal
da signalqueue.mappings importare ModelInstanceMap
# Questi due costruttori fanno la stessa cosa
my_signal = AsyncSignal (providing_args = ['istanza']) # la Yuge
my_other_signal = AsyncSignal (providing_args = {'istanza': ModelInstanceMap}) # con mappature
# Quanto segue può andare da nessuna parte - solo le istanze devono essere in yourapp / signals.py:
def callback (mittente, ** kwargs):
& Nbsp; print ",% s, sono stato così inviato in modo asincrono da% s, grazie a django-signalqueue." % (
& Nbsp; str (kwargs ['istanza']),
& Nbsp; mittente .__ name__)
my_signal.connect (callback)
... La differenza principale è la seconda definizione, che specifica providing_args come dict con classi mappatura invece di un elenco semplice. Ci spiegano classi mappatura più tardi, ma se si passa Django istanze modello per i segnali, non dovete preoccuparvi di questo.
Una volta che il lavoratore è in esecuzione, è possibile inviare il segnale di coda in questo modo:
>>> My_signal.send (sender = AModelClass, esempio = a_model_instance)
Per sparare il segnale come un normale segnale di Django, si può fare questo:
>>> My_signal.send_now (sender = AModelClass, esempio = a_model_instance)
Sintonizzati domani per la sorprendente conclusione ... del README django-signalqueue !!!!!!

Requisiti :

  • Python
  • Django

Altri software di sviluppo Alexander Bohn

h5dj
h5dj

20 Feb 15

dwight
dwight

14 Apr 15

Commenti a django-signalqueue

I commenti non trovato
Aggiungi commento
Accendere le immagini!