问题标签 [celerybeat]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
5325 浏览

django - 芹菜:在特定时间间隔后执行任务

我想在我的用户注册 48 小时后向他们发送一封电子邮件。我如何使用 celery 实现这一点?如果我创建一个定期任务来发送电子邮件,我将不得不决定我想要执行该任务的具体时间。我不想每秒都运行一个 celery 任务来检查是否有任何电子邮件需要发送。

0 投票
2 回答
3673 浏览

python - Celery 死于 DBPageNotFoundError

我有 3 台带有 celery 工人和 rabbitmq 作为经纪人的机器,一名工人正在以节拍标志运行,所有这些都由主管管理,有时 celery 会因此类错误而死。此错误仅出现在 beat worker 上,但当它出现时,所有机器上的工人都会死亡。(芹菜==3.1.12,昆布==3.0.20)

0 投票
1 回答
717 浏览

dynamic - 在运行时动态改变 celery 任务的周期间隔

我有一个每分钟运行一次的周期性 celery 任务,如下所示:

pollAPI()正如您可能从名称中猜到的那样,函数在哪里轮询 API。问题是 API 有一个未公开的速率限制,如果达到该限制,有时会给出错误响应。我希望能够接受该响应,如果达到限制,请动态减少周期性任务间隔(甚至将任务暂停一段时间)。这可能吗?

我在文档中读到了关于覆盖 的is_due方法schedules,但我不知道该怎么做才能给出我在这里寻找的行为。有人可以帮忙吗?

0 投票
2 回答
2144 浏览

django - Django celery 从警告消息中击败了实质性漂移

所以我正在使用虚拟机(流浪者)进行开发,当我在其中启动 celery beat 时收到此消息:

当我在里面约会时,我得到了一个Tue Jul 15 09:25:11 UTC 2014,但问题是我住在葡萄牙,而我的主机给了我Ter Jul 15 10:25:39 WEST 2014

我解决这个问题的最佳方法是什么?

当我把这个直播的时候呢?

我正在使用celery 3.1.12,我没有CELERY_TIME_ZONE一套。

0 投票
0 回答
349 浏览

flask - celery.conf.update 是否将更改传播给所有工作人员?

我正在使用以下内容向 Celery 添加新的计划任务:

update_scheduled_tasks然后在添加新任务时调用该任务:

这适用于一名 Celery 工人;它会添加新的计划任务。即使我有多个工人,它也会一样工作吗?Celery 如何将配置更改传播给多个工作人员?我在文档中找不到任何关于此的内容。

PS我正在使用Flask,所以django-celery不是我的选择。

0 投票
1 回答
485 浏览

django - Celery 和 Celerybeat 随机开始表现得很时髦

我将 Celery 与我的 Django 应用程序一起使用,并且在大多数情况下,事情进展顺利。作为参考,这是我的 celerybeat 配置:

我注意到每 1-2 天,它会随机完全不同步。例如,每 5 分钟运行一次的最后一个条目通常运行如下:1:00、1:05、1:10、1:15 等。

这是它今天早上所做的:7:30、7: 35、7:40、7:46、7:50、8:03、8:16、8:32、8: 50、9 : 13、9: 21, 9:26, 9:29, 9:32, 9:38, 9:47, 9:59, 10:08, 10:22, 10:24, 10:24, 10:24, 10:24, 10:25, 10:25, 10:25, 10:25, 10:25, 10:25, 10:25, 10:25, 10:25, 10:25, 10:25, 10:26, 10: 26、10 :30、10:35、10:40...

它几乎看起来不同步,试图一次弥补它,然后重新恢复。起初我以为这只是侥幸,但它发生得太频繁了。我有这方面的关键任务流程,需要按时运行。

有什么办法可以防止这种情况发生吗?似乎人们在 Celery 上取得了巨大的成功,所以我真的很困惑。

0 投票
0 回答
102 浏览

python - 从数据库中提取 Celery Beat 参数

有没有办法给 celery beat 一个可调用的函数,它将返回参数传递给消息?我希望能够从数据库中提取数据来构造要传递给 celery 队列的参数。

我想做的是这样的:

目前我有一台机器将消息添加到队列中,另一台机器将消息从队列中取出并处理它们。将消息添加到队列的机器对其参数进行了硬编码,但我希望它能够将该信息从数据库中提取出来。

我目前能想到的唯一解决方案是将消息添加到队列以运行 celery 本身的机器。它将有一个单独的队列来运行将消息添加到处理服务器的原始队列的命令。这似乎过于复杂,似乎应该有一个更简单的解决方案。

0 投票
0 回答
495 浏览

rabbitmq - 带有广播队列的 Celery 定期任务

我用 celery 和 celery beat 和 rabbit mq,一切都很好。

但是现在,我在广播队列上创建了一个定期任务,这不起作用。

芹菜配置文件

任务.py

在日志文件中我可以看到任务被触发,但任务没有运行

如何在广播队列中启动周期性脚本?

谢谢

马塞尔

0 投票
1 回答
5004 浏览

python - Celerybeat计划多次执行任务?

我有一个任务calculate_common_locations通过运行一次CELERYBEAT_SCHEDULE。该任务只是调用数据库中的一个函数:

这是中的条目CELERYBEAT_SCHEDULE

该计划包括更多每天或每 10 秒运行一次的任务。这些任务似乎不会重新运行很多次。芹菜花显示任务执行了 20 次以上。第一个按计划启动,运行约 100 秒,成功,然后再次启动。

在此处输入图像描述

只有一个 celerybeat 正在运行:

这就是 celery 的启动方式(通过 supervisord):

我已经在没有--concurrency=10开关的情况下对其进行了测试。数据库函数仍然执行多次。

该函数从一个经常插入(每秒几次)的大表(> 1 百万行)中读取。Postgres 锁显示所有锁都被授予。

是否有可能因为查询在某个时刻终止而重新运行任务?

在以下情况下没有问题:

  • 该任务从 django shell 运行(直接或通过.delay()),
  • 任务的内容被一个轻量级的 sql 查询替换(select * from test),
  • 任务的内容被替换为sleep(100)

版本:

  • 芹菜==3.1.12
  • psql (PostgreSQL) 9.3.5
0 投票
2 回答
1199 浏览

python - 是否可以暂停芹菜节拍任务但其他节拍任务仍然有效?

我的应用程序中有 3 个节拍任务。当节拍任务运行时,我flower用来管理任务。

当我发现一个任务有bug时,我必须停止整个任务来修改bug。然后我重新启动芹菜。

是否可以只停止一项任务并让其他任务继续运行?