RQ是一个简单、轻量级的库,用于创建后台任务并处理它们。
项目描述
RQ (Redis Queue) 是一个简单的Python库,用于排队任务并在后台使用工作者处理它们。它由Redis支持,旨在具有低门槛。它应该很容易集成到您的Web堆栈中。
RQ需要Redis >= 3.0.0。
完整文档可以在这里找到。
支持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, 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
相关项目
查看以下仓库,这些仓库可能对您的基于rq的项目有所帮助。
项目历史
该项目受到了Celery、Resque和此代码片段的启发,并作为Celery或其他基于AMQP的队列实现的重型替代方案而创建。
项目详情
下载文件
下载适用于您的平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。
源分布
rq-1.16.2.tar.gz (629.9 kB 查看哈希值)
构建分布
rq-1.16.2-py3-none-any.whl (90.9 kB 查看哈希值)