基于 Redis 的简单界面的调度器
项目描述
一个基于 Redis 的简单界面的调度器。
RACHE 不处理作业执行。它只维护作业列表及其理论执行时间。您需要自己监控挂起的作业并将它们发送到实际的任务队列。
安装
RACHE 与从 2.6 到 3.3 的任何 Python 版本兼容。您只需要一个正常工作的 Redis 服务器。
pip install rache
配置
默认情况下,RACHE 通过 localhost,端口 6379,数据库 0 连接到 Redis。要覆盖此设置,请设置 REDIS_URL 环境变量
REDIS_URL=redis://redis.example.com:6379/2
RACHE 将其所有 Redis 键的前缀设置为 rache:。您可以通过设置 RACHE_REDIS_PREFIX 环境变量来覆盖此设置。
用法
import rq from rache import schedule_job, pending_jobs # Schedule a job now schedule_job('http://github.com/brutasse/rache', schedule_in=0, timeout=10) # Get pending jobs jobs = pending_jobs() # Send them to the task queue for immediate execution for job in jobs: rq.enqueue_job(...)
schedule_job
schedule_job('job id', schedule_in=<seconds>, connection=None, **kwargs)
从调度器的角度来看,给定的作业 ID 是唯一的。调度它两次会导致它在最后一次调用决定的时间进行调度。
可以使用 **kwargs 将数据附加到您的作业中。例如,如果您有要抓取 URL 的作业并希望为这些作业附加超时
schedule_job('http://example.com/test', schedule_in=3600, timeout=10)
作业数据是持久的。要从数据中删除密钥,请使用设置为 None 的密钥调用 schedule_job()
schedule_job('http://example.com/test', schedule_in=3600, timeout=None)
schedule_in 是强制的。这意味着您不能在不重新调度的情况下更新现有作业。
connection 允许您传递自定义 Redis 连接对象。如果您有自己的连接池并希望自行管理连接,这非常有用。
pending_jobs
jobs = pending_jobs(reschedule_in=None, limit=None, connection=None)
(返回值是一个生成器)
获取待处理任务并返回一个任务列表。每个任务都是一个包含 id 键及其附加数据的字典。
reschedule_in 控制是否在指定时间内自动重新安排任务。如果您有周期性任务但还想根据任务的结果特别处理一些任务,这非常有用(enqueue 是 rq-style syntax)
jobs = pending_jobs(reschedule_in=3600) for job in jobs: enqueue(do_something, kwargs=job) def do_something(**kwargs): # … do some work if some_condition: # re-schedule in 30 days schedule_job(kwargs['id'], schedule_in=3600 * 24 * 30)
limit 允许您限制返回的任务数量。剩余的任务将被保留在计划中,即使它们应该立即安排。
connection 允许您传递自定义 Redis 连接对象。
delete_job
delete_job('<job id>', connection=None)
从调度程序中完全删除任务。
connection 允许您传递自定义 Redis 连接对象。
job_details
job_details('<job id>', connection=None)
返回一个包含任务数据的字典。任务 ID 和计划时间分别设置在返回值的 id 和 schedule_at 键中。
connection 允许您传递自定义 Redis 连接对象。
scheduled_jobs
scheduled_jobs(with_times=False, connection=None)
(返回值是一个生成器)
获取调度程序中存储的所有任务 ID。如果设置了 with_times 为 True,则返回一个 ID 列表或一个包含 (job_id, timestamp) 元组的列表。
这对于在调度程序和数据库之间同步任务非常有用。
connection 允许您传递自定义 Redis 连接对象。
贡献
创建本地环境
virtualen env source env/bin/activate pip install -e .
运行测试
python setup.py test
或为所有支持的 Python 版本
tox
开发、修复错误并提交拉取请求!
变更日志
0.3.1 (2013-08-31):
使 pending_jobs 正确与 Redis 和 StrictRedis 客户端一起工作。
0.3 (2013-08-31):
允许传递自定义 Redis 连接对象以对打开的连接进行精细控制。
0.2.2 (2013-07-10):
修复了一个导致获取某些任务时出现 AttributeError 的错误。
0.2.1 (2013-07-03):
如果将无法解码的字节传递给 schedule_job(),则允许 pending_jobs() 返回非 Unicode 数据。
0.2 (2013-06-02):
向 pending_jobs() 添加了 limit 关键字参数。
允许 schedule_in 作为一个 timedelta 而不是一个数字。
添加了 job_details()。
当返回时,附加到任务上的数值数据被转换为 int()。
0.1 (2013-06-01):
初始发布
项目详细信息
下载文件
下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于 安装软件包 的信息。