跳转到主要内容

基于 Redis 的简单界面的调度器

项目描述

Build Status

一个基于 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 控制是否在指定时间内自动重新安排任务。如果您有周期性任务但还想根据任务的结果特别处理一些任务,这非常有用(enqueuerq-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 和计划时间分别设置在返回值的 idschedule_at 键中。

connection 允许您传递自定义 Redis 连接对象。

scheduled_jobs

scheduled_jobs(with_times=False, connection=None)

(返回值是一个生成器)

获取调度程序中存储的所有任务 ID。如果设置了 with_timesTrue,则返回一个 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 正确与 RedisStrictRedis 客户端一起工作。

  • 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):

    • 初始发布

项目详细信息


下载文件

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

源分发

rache-0.3.1.tar.gz (6.8 kB 查看哈希值)

上传时间

构建分发

rache-0.3.1-py2.py3-none-any.whl (8.7 kB 查看哈希值)

上传于 Python 2 Python 3