RQ ( Redis Queue ) هي مكتبة Python بسيطة لوضع المهام في قائمة الانتظار ومعالجتها في الخلفية مع العمال. إنه مدعوم من Redis وهو مصمم ليكون به حاجز منخفض للدخول. يجب أن يتم دمجه في مكدس الويب الخاص بك بسهولة.
يتطلب RQ Redis >= 3.0.0.
يمكن العثور على الوثائق الكاملة هنا.
إذا وجدت RQ مفيدًا، فيرجى التفكير في دعم هذا المشروع عبر Tidelift.
أولاً، قم بتشغيل خادم Redis بالطبع:
$ redis-server
لوضع المهام في قوائم الانتظار، ليس عليك القيام بأي شيء خاص، ما عليك سوى تحديد وظيفة طويلة أو وظيفة الحظر:
import requests
def count_words_at_url ( url ):
"""Just an example function that's called async."""
resp = requests . get ( url )
return len ( resp . text . split ())
ثم قم بإنشاء قائمة انتظار RQ:
from redis import Redis
from rq import Queue
queue = Queue ( connection = Redis ())
وقم بإدراج استدعاء الوظيفة:
from my_module import count_words_at_url
job = queue . enqueue ( count_words_at_url , 'http://nvie.com' )
جدولة المهام سهلة أيضًا:
# Schedule job to run at 9:15, October 10th
job = queue . enqueue_at ( datetime ( 2019 , 10 , 10 , 9 , 15 ), say_hello )
# Schedule job to run in 10 seconds
job = queue . enqueue_in ( timedelta ( seconds = 10 ), say_hello )
إعادة محاولة المهام الفاشلة مدعومة أيضًا:
from rq import Retry
# Retry up to 3 times, failed job will be requeued immediately
queue . enqueue ( say_hello , retry = Retry ( max = 3 ))
# Retry up to 3 times, with configurable intervals between retries
queue . enqueue ( say_hello , retry = Retry ( max = 3 , interval = [ 10 , 30 , 60 ]))
للحصول على مثال أكثر اكتمالا، راجع المستندات. ولكن هذا هو الجوهر.
لبدء تنفيذ استدعاءات الوظائف الموجودة في قائمة الانتظار في الخلفية، ابدأ عاملاً من دليل مشروعك:
$ rq worker --with-scheduler
*** Listening for work on default
Got count_words_at_url('http://nvie.com') from default
Job result = 818
*** Listening for work on default
هذا كل ما في الأمر.
ما عليك سوى استخدام الأمر التالي لتثبيت أحدث إصدار تم إصداره:
pip install rq
إذا كنت تريد الإصدار المتطور (الذي قد يكون معطلاً)، فاستخدم هذا:
pip install git+https://github.com/rq/rq.git@master#egg=rq
لإنشاء المستندات وتشغيلها، قم بتثبيت jekyll ثم قم بتشغيل:
cd docs
jekyll serve
إذا كنت تستخدم RQ، فراجع هذه المستودعات أدناه والتي قد تكون مفيدة في مشروعك القائم على rq.
تم استلهام هذا المشروع من الأجزاء الجيدة من Celery وResque وهذا المقتطف، وتم إنشاؤه كبديل خفيف الوزن لثقل Celery أو تطبيقات قائمة الانتظار الأخرى المستندة إلى AMQP.