跳转到主要内容

RQ是一个简单、轻量级的库,用于创建后台任务并处理它们。

项目描述

RQ (Redis Queue) 是一个简单的Python库,用于排队任务并在后台使用工作者处理它们。它由Redis支持,旨在具有低门槛。它应该很容易集成到您的Web堆栈中。

RQ需要Redis >= 3.0.0。

Build status PyPI Coverage Code style: black

完整文档可以在这里找到。

支持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的项目有所帮助。

项目历史

该项目受到了CeleryResque此代码片段的启发,并作为Celery或其他基于AMQP的队列实现的重型替代方案而创建。

项目详情


发行历史 发布通知 | RSS源

下载文件

下载适用于您的平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源分布

rq-1.16.2.tar.gz (629.9 kB 查看哈希值)

上传时间

构建分布

rq-1.16.2-py3-none-any.whl (90.9 kB 查看哈希值)

上传于 Python 3

由以下支持