django-signalqueue

Software screenshot:
django-signalqueue
Software informatie:
Versie: 0.5.1
Upload datum: 20 Feb 15
Ontwikkelaar: Alexander Bohn
Licentie: Gratis
Populariteit: 7

Rating: 3.0/5 (Total Votes: 1)

Na een bepaalde tijd iedereen zich bezig te houden met de Django kader gaat naar de vraag te stellen: Ik hou van Django's signalen, inderdaad. Maar als alleen ik kon ze asynchroon te verzenden. Zoals, op een andere thread of zoiets, ik weet eigenlijk niet .... Is dat een of andere manier mogelijk?
Nou, nu kan je gemakkelijk doen met Django-signalqueue.
Kijk, ik zal je laten zien. Installeer eerst django-signalqueue:
$ Pip installeren django-signalqueue # dit zal installeren tornado en django-afgevaardigde indien nodig
... Je kunt ook een aantal van deze optionele pakketten, als je ze nog niet hebt:
$ Brouwsel installeren redis yajl # s / koffie / apt-get / naar smaak
$ Pip redis installeren hiredis # aanbevolen
$ Pip install ujson # aanbevolen
$ Pip installeren czjson yajl simplejson # deze werken te
$ Pip installeren neus django-neus # voor de tests
Voeg django-signalqueue uw INSTALLED_APPS, en de instellingen voor een wachtrij, terwijl je in je settings.py:
# Settings.py
INSTALLED_APPS = [
& Nbsp; 'signalqueue', # ...
]
SQ_QUEUES = {
& Nbsp; 'default': {# u minstens één dict de naam 'default' in SQ_QUEUES nodig
& Nbsp; 'NAAM': 'signalqueue_default', # optioneel - standaard op 'signalqueue_default'
& Nbsp; 'MOTOR': 'signalqueue.worker.backends.RedisSetQueue', # vereist - dit is de bestuurder van uw wachtrij
& Nbsp; 'INTERVAL': 30, # 1/3 sec
& Nbsp; 'Opties': dict (),
& Nbsp;},
}
SQ_RUNMODE = 'SQ_ASYNC_REQUEST' # gebruik async verzending standaard
SQ_WORKER_PORT = 11231 # de haven je wachtrij werkproces zal binden aan
Naast al dat je gewoon een oproep moeten signalqueue.autodiscover () in je root URLConf:
# Urls.py
import signalqueue
signalqueue.autodiscover ()
U kunt asynchrone signalen definiëren!
Asynchrone signalen zijn gevallen van signalqueue.dispatch.AsyncSignal die u hebt gedefinieerd in een van de volgende plaatsen:
- Your_app / signals.py (het is prima als je al dit bestand te gebruiken, zoals velen doen)
- Modules genoemd in een lijst of tupel settings.SQ_ADDITIONAL_SIGNALS
- Binnenkort: signalqueue.register () - zodat u ze ergens anders zetten.
AsyncSignals worden gedefinieerd net als de bekende gevallen van django.dispatch.Signal die je kent en liefde:
# Yourapp / signals.py
van signalqueue.dispatch import AsyncSignal
van signalqueue.mappings importeren ModelInstanceMap
# Deze twee constructeurs hetzelfde doen
my_signal = AsyncSignal (providing_args = ['instance']) # het Yuge
my_other_signal = AsyncSignal (providing_args = {'instance': ModelInstanceMap}) # met mappings
# Wat volgt kan nergens heen - alleen de gevallen moeten worden in yourapp / signals.py:
def callback (afzender, ** kwargs):
& Nbsp; print "Ik,% s, zijn hierbij verzonden asynchroon door% s, dankzij django-signalqueue." % (
& Nbsp; str (kwargs ['instance']),
& Nbsp; afzender .__ name__)
my_signal.connect (callback)
... Het belangrijkste verschil is de tweede definitie, die providing_args specificeert als een dict met mapping klassen in plaats van een gewone lijst. We zullen het in kaart brengen klassen uitleggen later, maar als u op doorreis Django model gevallen om uw signalen, hoeft u zich geen zorgen te maken over dit.
Zodra de werknemer actief is, kunt u het signaal naar de wachtrij als volgt:
>>> My_signal.send (afzender = AModelClass, bijvoorbeeld = a_model_instance)
Om uw signaal als een normale Django signaal vuur, kunt u dit doen:
>>> My_signal.send_now (afzender = AModelClass, bijvoorbeeld = a_model_instance)
Stem af op morgen voor de verbazingwekkende conclusie van ... de Django-signalqueue README !!!!!!

Eisen

  • Python
  • Django

Andere software van ontwikkelaar Alexander Bohn

h5dj
h5dj

20 Feb 15

dwight
dwight

14 Apr 15

Reacties op django-signalqueue

Reacties niet gevonden
Commentaar toe te voegen
Zet op de beelden!