一个由redis支持的调度器,具有非常简单的接口
rache的Python项目详细描述
由Redis支持的调度程序,具有非常简单的接口。
瑞秋不负责工作执行。它只维护一个作业列表 理论执行时间。由您监视挂起的作业并发送 将它们放到实际的任务队列中。
安装
rache可以处理2.6到3.3之间的任何python版本。你只需要一份工作 redis服务器。
pip install rache
配置
默认情况下,rache连接到本地主机上的redis,端口6379,数据库0。到 覆盖这个,设置一个REDIS_URL环境变量:
REDIS_URL=redis://redis.example.com:6379/2
rache用rache:作为所有redis键的前缀。你可以通过 正在设置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)
作业数据是持久的。要从数据中删除密钥,请调用 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样式的语法):
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连接对象。
^ {tt15}$
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。这将返回ID列表或 如果with_times设置为True,则为(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年8月31日):
- 允许在打开时传递自定义redis连接对象以进行精细控制 连接。
- 0.2.2(2013-07-10):
- 修复了检索某些作业时导致AttributeError的打印错误。
- 0.2.1(2013-07-03):
- 如果无法编码字节,则允许pending_jobs()返回非Unicode数据 传递给schedule_job()。
- 0.2(2013-06-02):
- 将limitkwarg添加到pending_jobs()。
- 允许schedule_in为时间增量A替换为多个 几秒钟。
- 添加了job_details()。
- 返回时,附加到作业的数字数据将转换为int()。
- 0.1(2013-06-01):
- 初始版本