当前位置: 首页 > 软件库 > 程序开发 > >

celery-task-tigger

可控制调度执行的celery小插件
授权协议 MIT
开发语言 Python
所属分类 程序开发
软件类型 开源软件
地区 国产
投 递 者 暴骏奇
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

众所周知,Celery是Python中非常著名的任务队列框架,其中还包含了一个“定时调度任务”的大杀器,其机制大致就是通过Celery内置的celerybeat来开启一个进程,然后把对应worker中的任务定时丢给rabbitmq或者redis来去跑。其实简单的来说,就是当你开启celery的时候,你希望被调度的任务已经开始跑了。

如果有一天我们希望自己来去控制何时开始跑定时任务并且何时去停止,那么这个问题就稍微有点复杂......所以在这里celery-task-tigger这个小插件或许能助你一臂之力。

用起来非常简单,你只需要引入一行代码就能搞定,举个例子:

from celery_tasktigger.decorator import tigger_task

@app.task(bind=True)
@tigger_task(max_times='forever')
def add(self, x, y):
    return x + y

装饰器@tigger_task 提供了2个参数:max_times和countdown

1. max_times

输入类型为Int, 表示最多可执行几次,其中有一个特殊参数‘forever’表示无限执行

2. countdown

输入类型Int,表示每次执行结束的几秒后进行再次执行,默认为1秒

然后你就可以随心所欲的来控制你自己的task,并且100%兼容celery

更多的详情,你可以进入该项目的Github的首页

 相关资料
  • 问题内容: 我有一个Django站点,当用户请求时会发生刮擦,并且我的代码在新过程中启动了Scrapy Spider独立脚本。自然,这与增加用户无关。 像这样: 我决定使用Celery并使用worker来对爬网请求进行排队。 但是,我遇到了无法重新启动tornado反应堆的问题。第一个蜘蛛和第二个蜘蛛成功运行,但随后的蜘蛛将引发ReactorNotRestartable错误。 任何人都可以在Cel

  • 问题内容: 我在应用程序中使用它来运行定期任务。让我们看下面的简单例子 正如你可以在上面的例子中看到的,我使用到异步任务运行,但(因为它是一个队列)我需要做的异常的情况下,或以其他方式。在这种情况下,在-和两种情况下从我的任务中进行一些回调将是非常清楚和有用的。 我看到了一些文档,但从未见过将回调与配合使用的做法。有可能这样做吗? 问题答案: 子类Task类并重载on_success和on_fai

  • Celery 是一个简单,灵活且可靠的分布式系统,可以处理大量消息,同时为操作提供维护该系统所需的工具。这是一个任务队列,着重于实时处理,同时还支持任务调度。 Celery 通过消息进行通信,通常使用经纪人在 clients 和 workers 之间进行调解。要启动一个任务,客户端会在队列中放入一条消息,然后经纪人将消息传递给工人。 一个Celery系统可以由多个worker和broker组成,从

  • 问题内容: 我一直在阅读文档并进行搜索,但似乎找不到直接的答案: 你可以取消已经执行的任务吗?(由于任务已开始,需要一段时间,因此需要取消一半) 我是从Celery FAQ的文档中找到的 但是我不清楚这是否会取消排队的任务,或者是否会杀死工作程序上正在运行的进程。感谢你能摆脱的光芒! 问题答案: 撤销将取消任务执行。如果任务被吊销,工人将忽略该任务并且不执行它。如果你不使用持久撤销,则可以在wor

  • 问题内容: 有什么办法可以限制芹菜的工人数量?我的服务器很小,芹菜总是在1个核心处理器上创建10个进程。我想将此数目限制为3个进程。 问题答案: 我尝试在settings.py文件中将并发设置为1,将max_tasks_per_child设置为1,并同时运行3个任务。它只是以用户的身份生成1个进程,而以芹菜的形式生成其他2个进程。它应该只运行1个进程,然后等待其完成再运行另一个进程。 我正在使用d

  • 问题内容: 按照此处找到的说明,我将脚本从github复制到 /etc/init.d/celeryd中 ,然后使其可执行; 我按照说明创建了配置文件 / etc / default / celeryd : 注意 :我在CELERYD_OPTS中添加了 --config = celeryconfig 部分。 我创建了一个新的用户 celery 与 然后创建集体 celery 并向其中添加用户: 我将