RQ需要Redis>=3.0.0
可以找到完整的文档here
支持RQ
如果您发现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())
你确实用了优秀的requests包裹,不是吗?
然后,创建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, 8, 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]))
有关更完整的示例,请参阅docs但这才是最本质的
这位工人
要开始在后台执行入队的函数调用,请从项目的目录中启动一个工作器:
$ 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/nvie/rq.git@master#egg=rq
相关项目
请查看下面这些可能对您的基于RQ的项目有用的报告
项目历史记录
这个项目的灵感来自于Celery,Resque和this snippet,并作为celery或其他基于amqp的排队实现的轻量级替代方案而创建。