django-signalqueue

Скріншот програми:
django-signalqueue
Дані програми:
Версія: 0.5.1
Дата завантаження: 20 Feb 15
Розробник: Alexander Bohn
Ліцензія: Безкоштовно
Популярність: 7

Rating: 3.0/5 (Total Votes: 1)

Після певної кількості часу, хто про себе з рамки Django збирається поставити запитання: я люблю сигнали Джанго, дійсно. Але якби я тільки міг направити їх асинхронно. Мовляв, на якийсь інший потік або щось, я не знаю, .... Це якось можна?
Ну, тепер ви можете легко зробити це з Django-signalqueue.
Годинники, я вам покажу. По-перше, встановити Django signalqueue-:
$ Пункт встановити Django-signalqueue # це буде встановити торнадо і Django-делегат при необхідності
... Ви можете також хочете, щоб деякі з цих додаткових пакетів, якщо ви їх не мають вже:
$ Вариво встановити Redis yajl # S / приготування / APT-отримати / смаком
$ PIP встановити Redis hiredis # рекомендується
$ Пункт встановити ujson # рекомендується
$ Пункт встановити czjson yajl simplejson # ці роботи теж
$ PIP встановити ніс Django ніс # для випробувань
Додати Django-signalqueue на ваш INSTALLED_APPS і налаштування для черги, в той час як ви знаходитесь у своєму settings.py:
# Settings.py
INSTALLED_APPS = [
І NBSP; 'signalqueue', # ...
]
SQ_QUEUES = {
І NBSP; 'за замовчуванням': {# потрібно принаймні один Dict імені «за замовчуванням» в SQ_QUEUES
І NBSP; 'ім'я': 'signalqueue_default', # додатково - за умовчанням "signalqueue_default"
І NBSP; 'Engine': 'signalqueue.worker.backends.RedisSetQueue', # потрібно - це водій черги в
І NBSP; 'Interval': 30, # 1/3 сек
І NBSP; 'Параметри': Dict (),
І NBSP;},
}
SQ_RUNMODE = 'SQ_ASYNC_REQUEST' # використання асинхронних відправка за замовчуванням
SQ_WORKER_PORT = 11231 # порт ваш робочий процес чергу буде зв'язуватися з
Крім того, все, що вам просто потрібно подзвонити в signalqueue.autodiscover () в кореневому URLconf:
# Urls.py
імпорт signalqueue
signalqueue.autodiscover ()
Ви можете визначити асинхронних сигналів!
Асинхронні сигнали є екземплярами signalqueue.dispatch.AsyncSignal, що ви визначили в одному з наступних місць:
- Your_app / signals.py (це нормально, якщо ви вже використовуєте цей файл, як роблять багато)
- Модулі, перераховані в списку settings.SQ_ADDITIONAL_SIGNALS або кортежу
- Скоро: signalqueue.register () - так що ви можете покласти їх в іншому місці.
AsyncSignals визначаються так само, як знайомі випадках django.dispatch.Signal ви знаєте і любите:
# YourApp / signals.py
від signalqueue.dispatch AsyncSignal імпорту
від signalqueue.mappings імпортувати ModelInstanceMap
# Ці два конструктора зробити те ж саме
my_signal = AsyncSignal (providing_args = ['екземпляр']) # йуге
my_other_signal = AsyncSignal (providing_args = {'екземпляр': ModelInstanceMap}) # з відображень
# Надалі може піти куди завгодно - тільки екземпляри повинні бути в YourApp / signals.py:
Def зворотного виклику (відправник, ** kwargs):
І NBSP; друк "I,% с, були справжнім направив асинхронно% S, завдяки Django-signalqueue." % (
І NBSP; вул (kwargs ['екземпляр']),
І NBSP; відправник .__ name__)
my_signal.connect (виклик)
... Основна відмінність полягає в друге визначення, яке визначає providing_args як Dict з класами відображення замість звичайного списку. Ми пояснимо відображення класів пізніше, але якщо ви проходите екземплярів моделі Django для ваших сигналів, вам не доведеться турбуватися про це.
Після того, як працівник працює, ви можете відправити сигнал на черзі ось так:
>>> My_signal.send (відправник = AModelClass, екземпляр = a_model_instance)
Щоб запустити ваш сигнал як звичайний сигнал Django, ви можете зробити це:
>>> My_signal.send_now (відправник = AModelClass, екземпляр = a_model_instance)
Налаштуйтеся на завтра до приголомшливого висновку ... на Django-signalqueue README !!!!!!

Вимоги

  • Python
  • Django

Інші програми розробника Alexander Bohn

dwight
dwight

14 Apr 15

hdf5-django
hdf5-django

20 Feb 15

django-delegate
django-delegate

15 Apr 15

h5dj
h5dj

20 Feb 15

django-signalqueue

Коментар не знайдено
додати коментар
Включіть картинки!