django-signalqueue

Tela Software:
django-signalqueue
Detalhes de Software:
Versão: 0.5.1
Data de upload: 20 Feb 15
Revelador: Alexander Bohn
Licença: Livre
Popularidade: 7

Rating: 3.0/5 (Total Votes: 1)

Depois de uma certa quantidade de qualquer um tempo preocupando-se com o framework Django vai fazer a pergunta: Eu amo sinais do Django, de fato. Mas se eu pudesse despachá-los de forma assíncrona. Como, em algum outro segmento ou algo assim, eu realmente não sei .... É que de alguma forma possível?
Bem, agora você pode facilmente fazer isso com django-signalqueue.
Watch, eu vou lhe mostrar. Primeiro, instale o django-signalqueue:
$ Pip instalar django-signalqueue # irá instalar tornado e django-representante, se necessário
... Você também pode querer alguns destes pacotes opcionais, se você não tê-los já:
$ Fermentação instalar Redis yajl # s / cerveja / apt-get / a gosto
$ Pip instalar Redis hiredis # recomendados
$ Pip instalação ujson # recomendado
$ Pip instalar czjson yajl simplejson # esses trabalhos também
$ Pip instalar nariz django-nariz # para os testes
Adicionar django-signalqueue ao seu INSTALLED_APPS, e as configurações para uma fila, enquanto você está em seu settings.py:
# Settings.py
INSTALLED_APPS = [
& Nbsp; "signalqueue ', # ...
]
SQ_QUEUES = {
& Nbsp; 'default': {# você precisa de pelo menos um dict chamado 'default' em SQ_QUEUES
& Nbsp; 'NOME': 'signalqueue_default', # opcional - o padrão é 'signalqueue_default'
& Nbsp; 'motor': 'signalqueue.worker.backends.RedisSetQueue', # necessário - este é o motorista de sua fila
& Nbsp; "intervalo": 30, # 1/3 sec
& Nbsp; "Opções": dict (),
& Nbsp;},
}
SQ_RUNMODE = 'SQ_ASYNC_REQUEST' # uso async expedição por padrão
SQ_WORKER_PORT = 11231 # porto o seu processo de trabalho da fila irá ligar-se a
Além de tudo isso, você só precisa de uma chamada para signalqueue.autodiscover () em seu URLConf root:
# Urls.py
signalqueue importação
signalqueue.autodiscover ()
Você pode definir sinais assíncronos!
Sinais assíncronos são instâncias de signalqueue.dispatch.AsyncSignal que você definiu em um dos seguintes locais:
- Your_app / signals.py (é bom se você já usa esse arquivo, como muitos fazem)
- Módulos nomeadas em uma lista settings.SQ_ADDITIONAL_SIGNALS ou tupla
- Em breve: signalqueue.register () - para que você possa colocá-los em qualquer outro lugar.
AsyncSignals são definidos bem como os casos familiares de django.dispatch.Signal você conhece e ama:
# Yourapp / signals.py
de signalqueue.dispatch importação AsyncSignal
de signalqueue.mappings importar ModelInstanceMap
# Estes dois construtores fazer a mesma coisa
my_signal = AsyncSignal (providing_args = ['instância']) # o yuge
my_other_signal = AsyncSignal (providing_args = {'instância': ModelInstanceMap}) # com mapeamentos
# O que se segue pode ir em qualquer lugar - apenas as instâncias precisam estar em yourapp / signals.py:
callback def (sender, ** kwargs):
& Nbsp; print "I,% s, foram expedidos decide de forma assíncrona por% s, graças a Django-signalqueue." % (
& Nbsp; str (kwargs ['instância']),
& Nbsp; remetente .__ name__)
my_signal.connect (callback)
... A principal diferença é a segunda definição, que especifica providing_args como um dicionário com as classes de mapeamento, em vez de uma lista simples. Vamos explicar as classes de mapeamento mais tarde, mas se você estiver passando Django instâncias de modelo para os seus sinais, você não precisa se preocupar com isso.
Uma vez que o trabalhador está em execução, você pode enviar o sinal para a fila da seguinte forma:
>>> My_signal.send (sender = AModelClass, instance = a_model_instance)
Para disparar o sinal como um sinal de Django normal, você pode fazer isso:
>>> My_signal.send_now (sender = AModelClass, instance = a_model_instance)
Sintonize amanhã para a conclusão surpreendente de ... o README django-signalqueue !!!!!!

Requisitos :

  • Python
  • Django

Outro software de desenvolvedor Alexander Bohn

h5dj
h5dj

20 Feb 15

django-delegate
django-delegate

15 Apr 15

hdf5-django
hdf5-django

20 Feb 15

Comentário para django-signalqueue

Comentários não encontrado
Adicionar comentário
Ligue imagens!