django-signalqueue

Logiciel capture d'écran:
django-signalqueue
Détails logiciels:
Version: 0.5.1
Date de transfert: 20 Feb 15
Développeur: Alexander Bohn
Licence: Gratuit
Popularité: 7

Rating: 3.0/5 (Total Votes: 1)

Après une certaine quantité de fois que quelqu'un se préoccuper le cadre Django va poser la question: Je adore les signaux de Django, en effet. Mais si seulement je pouvais les expédier de manière asynchrone. Comme, sur un autre thread ou quelque chose, je ne sais pas vraiment .... Est-ce en quelque sorte possible?
Eh bien, maintenant vous pouvez facilement faire avec django-signalqueue.
Watch, je vais vous montrer. D'abord, installez django-signalqueue:
$ Pip installer django-signalqueue # cela installera tornade et django-délégué si nécessaire
... Vous pouvez également certains de ces paquets en option, si vous ne les avez pas déjà:
$ Infusion installer redis yajl # s / brew / apt-get / au goût
$ Pip installer redis hiredis # recommandé
$ Pip install ujson # recommandée
$ Pip installer czjson yajl simplejson # ces travaux trop
$ PIP installer nez django-nez # pour les tests
Ajouter django-signalqueue à votre INSTALLED_APPS, et les paramètres d'une file d'attente, pendant que vous êtes dans votre settings.py:
# Settings.py
INSTALLED_APPS = [
& Nbsp; »signalqueue ', # ...
]
SQ_QUEUES = {
& Nbsp; 'par défaut': {# vous avez besoin au moins un dict nommé 'défaut' dans SQ_QUEUES
& Nbsp; 'NOM': 'signalqueue_default', # optionnel - par défaut 'signalqueue_default'
& Nbsp; «moteur»: «signalqueue.worker.backends.RedisSetQueue ', # nécessaire - ce est le pilote de votre file d'attente
& Nbsp; »INTERVALLE»: 30, # 1/3 sec
& Nbsp; 'Options': DICT (),
& Nbsp;},
}
SQ_RUNMODE = 'SQ_ASYNC_REQUEST' # utilisation asynchrone envoi par défaut
SQ_WORKER_PORT = 11231 # le port de votre processus de travail de file d'attente va se lier à
Outre tout cela, vous avez juste besoin d'un appel à signalqueue.autodiscover () dans votre URLconf racine:
# Urls.py
signalqueue d'importation
signalqueue.autodiscover ()
Vous pouvez définir des signaux asynchrones!
Signaux asynchrones sont des instances de signalqueue.dispatch.AsyncSignal que vous avez définis dans l'un des endroits suivants:
- Your_app / signals.py (ce est très bien si vous utilisez déjà ce fichier, comme beaucoup le font)
- Modules nommés dans une liste ou un tuple de settings.SQ_ADDITIONAL_SIGNALS
- Bientôt: signalqueue.register () - de sorte que vous pouvez les mettre ne importe où ailleurs.
AsyncSignals sont définis tout comme les cas connus de django.dispatch.Signal que vous connaissez et l'amour:
# Yourapp / signals.py
de signalqueue.dispatch importation AsyncSignal
de signalqueue.mappings importer ModelInstanceMap
# Ces deux constructeurs font la même chose
my_signal = AsyncSignal (providing_args = ['exemple']) # l'yuge
my_other_signal = AsyncSignal (providing_args = {'exemple': ModelInstanceMap}) # avec des mappages
# Ce qui suit peut aller ne importe où - que les instances doivent être en yourapp / signals.py:
def callback (expéditeur, kwargs **):
& Nbsp; print "I,% s, je ai été présente distribué de façon asynchrone par% s, grâce à Django-signalqueue." % (
& Nbsp; str (kwargs ['exemple']),
& Nbsp; l'expéditeur .__ name__)
my_signal.connect (rappel)
... La principale différence est la seconde définition, qui spécifie providing_args comme dict avec des classes de cartographie au lieu d'une simple liste. Nous allons expliquer les classes de cartographie plus tard, mais si vous êtes de passage instances de modèle Django à vos signaux, vous ne avez pas à vous inquiéter à ce sujet.
Une fois que le travailleur est en cours d'exécution, vous pouvez envoyer le signal à la file d'attente comme ceci:
>>> My_signal.send (sender = AModelClass, instance = a_model_instance)
Pour tirer le signal comme un signal Django normale, vous pouvez le faire:
>>> My_signal.send_now (sender = AModelClass, instance = a_model_instance)
Accordez demain pour la conclusion étonnante de ... le fichier README de django-signalqueue !!!!!!

Exigences :

  • Python
  • Django

D'autres logiciels de développeur Alexander Bohn

django-delegate
django-delegate

15 Apr 15

hdf5-django
hdf5-django

20 Feb 15

dwight
dwight

14 Apr 15

Commentaires à django-signalqueue

Commentaires non trouvées
Ajouter un commentaire
Tourner sur les images!