一个由redis支持的调度器,具有非常简单的接口

rache的Python项目详细描述


Build Status

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控制是否在给定时间内自动重新安排作业。 如果您有周期性的作业,但也希望在某些特殊情况下 作业根据其结果(enqueuerq样式的语法):

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和计划时间是 在返回值的idschedule_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_jobsRedisStrictRedis客户端。
  • 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):
    • 初始版本

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
如何从java中链接到数组的数组中删除值。jar文件?   性能记录屏幕Java磁盘速度   java Elastic APM Tomcat zip文件或JAR清单丢失   java无法在eclipse控制台上打印结果   java如何在Android中解析json对象?   java如何更改边缘根类型   java根据一些规则替换EditText中的字母   java项目反应器:是否有类似Nosideeffect finally的方法(不是sideeffect方法doFinally)   java连接Cassandra节点和spark   开源Java作业调度器:远程处理、负载平衡、故障切换、依赖DAG?   使用矢量汇编程序(Java)在Spark中设置输入和输出时出现问题   swing如何在Java中为文本字段创建右键单击菜单?   java查找最近的邻居/纬度和经度   java计算完成的数独板的行和列