django-signalqueue

צילום מסך תוכנה:
django-signalqueue
פרטי תוכנה:
גרסה: 0.5.1
טען תאריך: 20 Feb 15
מפתחים: Alexander Bohn
רשיון: ללא תשלום
פופולריות: 7

Rating: 3.0/5 (Total Votes: 1)

לאחר כמות מסוימת של פעם שמישהו נוגע בעצמם עם מסגרת Django הולכת לשאול את השאלה: אני אוהב את האותות של Django, אכן. אבל אם רק הייתי יכול לשלוח אותם באופן אסינכרוני. כמו, על איזה חוט או משהו אחרים, אני לא ממש יודע .... האם זה איכשהו אפשרי?
ובכן, עכשיו אתה יכול בקלות לעשות את זה עם Django-signalqueue.
שעון, אני אראה לך. ראשית, התקנת Django-signalqueue:
$ פיפס להתקין # Django-signalqueue זה יתקין טורנדו ואופטימיות-ציר במידת צורך
... ייתכן גם רוצה חלק מחבילות אופציונליות אלה, אם אתה לא צריך אותם כבר:
לחלוט $ להתקין Redis yajl # s / לחלוט / apt-get / לטעם
$ 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; 'NAME': '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 ()
ניתן להגדיר אותות סינכרוני!
אותות Asynchronous מקרים של signalqueue.dispatch.AsyncSignal שהגדרתם באחד מהמקומות הבאים:
- Your_app / signals.py (זה בסדר אם אתה כבר משתמש בקובץ זה, כפי שרבים עושים)
- מודולים בשם ברשימת settings.SQ_ADDITIONAL_SIGNALS או tuple
- בקרוב: signalqueue.register () - כך שאתה יכול לשים אותם בכל מקום אחר.
AsyncSignals מוגדר בדומה למקרים המוכרים של django.dispatch.Signal אתה מכיר ואוהב:
# Yourapp / signals.py
מAsyncSignal יבוא signalqueue.dispatch
מsignalqueue.mappings לייבא ModelInstanceMap
# שני בנאים אלה עושים את אותו הדבר
my_signal = AsyncSignal (providing_args = ['מופע']) # Yuge
my_other_signal = AsyncSignal (providing_args = {'מופע': ModelInstanceMap}) # עם מיפויים
# מה כדלקמן יכול ללכת לשום מקום - רק מקרים צריכים להיות בyourapp / signals.py:
התקשרות def (שולח, ** kwargs):
& Nbsp; הדפסה "אני,% s, כבר שיגר בזאת באופן אסינכרוני על ידי% s, הודות לאופטימיות-signalqueue." % (
& Nbsp; str (kwargs ['מופע']),
& Nbsp; שולח .__ name__)
my_signal.connect (callback)
... ההבדל העיקרי הוא בהגדרה השנייה, אשר מציינת providing_args כdict עם כיתות מיפוי במקום ברשימה רגיל. אנחנו נסביר כיתות מיפוי בהמשך, אבל אם אתה עובר מקרי מודל Django לאותות שלך, אתה לא צריך לדאוג בקשר לזה.
ברגע שהעובד פועל, אתה יכול לשלוח את האות לתור כך:
>>> My_signal.send (שולח = AModelClass, למשל = a_model_instance)
לפטר את האות שלך כמו אות Django נורמלית, אתה יכול לעשות את זה:
>>> My_signal.send_now (שולח = AModelClass, למשל = a_model_instance)
מנגינה במחר למסקנה המדהימה של ... README Django-signalqueue !!!!!!

דרישות :

  • > Python
  • Django

תוכנות אחרות של יזם Alexander Bohn

django-delegate
django-delegate

15 Apr 15

dwight
dwight

14 Apr 15

תגובות ל django-signalqueue

תגובות לא נמצא
להוסיף הערה
הפעל את התמונות!