问题标签 [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 回答
306 浏览

python - 为 python 脚本(机器人)启动计划作业的最佳方式

我正在尝试构建一个 Twitter 机器人,它执行一组具有不同时间间隔/周期的周期性操作。所以我试图想出一个好的解决方案来处理一组具有不同频率的计划任务。

例如,我需要执行以下任务:

  • 每 15 分钟做一次任务 1。
  • 每小时做任务 2。
  • 每天做任务3。
  • 每周做一次任务 4。

我一直在努力使用 cron 作业,但它看起来很混乱,要么每 15 分钟使用一个 cron 作业并检查需要执行哪个任务,要么为每个任务设置单独的 cron 条目。

我想要更好的东西,所以我读到 Celery 可以用来安排定期任务,但是我很难把头绕在工人和消息队列上。

还有其他选择吗?
您认为哪个更好使程序更易于维护和扩展?
我以前使用过 cron,但用于非常简单的任务。是否有任何关于如何为这种情况正确设置 cron 的资源。

0 投票
1 回答
1357 浏览

mongodb - 如何协调一组 celery beat 守护进程?

我有一个由三台机器组成的集群。我想celery beat在这些上运行。我有几个相关的问题。

  1. Celery 有一个持久调度器的概念。只要我的日程表仅包含 crontab 条目并且由 静态定义CELERYBEAT_SCHEDULE,我是否需要坚持它?
  2. 如果我这样做,那么我是否必须确保此存储在集群的所有机器之间同步?
  3. 是否djcelery.schedulers.DatabaseScheduler自动处理并发的节拍守护进程?也就是说,如果我只使用 运行三个节拍守护程序DatabaseScheduler,我是否可以避免重复任务?
  4. 有没有类似DatabaseScheduler但基于 MongoDB 的东西,没有 Django ORM?就像 Celery 自己的 MongoDB 代理和结果后端一样。
0 投票
1 回答
1687 浏览

python - 芹菜节拍与方法任务不起作用

我正在尝试在方法任务上运行 celerybeat,但无法正常工作。这是一个示例设置:

我的 celeryconfig.py 文件是

当我运行时celery beat,我收到如下错误:

当我把这个方法变成一个普通函数并用`@celery.task'装饰它时,它确实有效,所以其余的设置似乎正在工作。我在文档中看到了有关方法任务的警告,但无法真正找出问题所在。有谁知道如何解决这个问题?

0 投票
1 回答
3742 浏览

python - 如何在 celery 中安排工作日感知工作

是否可以使用 celery beat 配置复杂的时间表?例如,像这样:

周一到周五,用参数 (x1, y1) 做作业 A,然后做作业 B 周六、周日,用参数 (x2, y2) 做作业 A,不做作业 B

我知道我可以实现一个高频“tick”任务来检查这个时间表,但如果已经存在这样的东西,我不想重新发明轮子。

0 投票
1 回答
569 浏览

django - Django celery 启动时出现 pytz 错误

尝试使用 celery 和 celery beat 启动我的开发服务器时,突然出现以下错误。有一天这个东西可以工作,第二天就不行了,我没有改变任何可以解释这一点的东西。我使用工头和 Procfile.dev 启动我的服务器,如下所示:

档案:

命令:

就像我说的,这从来没有给出任何错误。堆栈跟踪如下:

我安装的软件包的版本:

我曾尝试重新安装 pytz,但这并没有帮助。

任何建议如何解决这个问题?

编辑 1

我已经尝试过 Burhan Khalid 的回答,这确实修复了 IOError,但是抛出了一个新错误。我尝试了两个地方来粘贴 zoneinfo 数据,它们导致了不同的错误,您可以在下面找到:

当像建议的那样粘贴到 usr/share/zoneinfo/ 中时,我得到了这个:

当粘贴到 ~/.virtualenvs/env_name/lib/python2.7/site-packages/pytz/zoneinfo 中时:

因此,提供的 zoneinfo 数据似乎不正确/不完整。我从哪里获得正确的数据?

编辑2:

我将 Burhan Khalid 的答案标记为答案,即使对我来说它不起作用。我这样做是因为我确定我做错了什么并且答案是正确的。我如何解决这个问题只是简单地将 zoneinfo 数据从另一台 macbook 复制粘贴到这个。

0 投票
1 回答
4746 浏览

django - Django Celery Beat - 如何使用 DatabaseScheduler 传递参数

我将“DatabaseScheduler”与 Django Celery Beat 一起使用,但我无法将参数传递给函数。

设置:

任务:

如何使用 Django 管理员传递参数“days”?我创建了一个名为“some_task”的新“定期任务”。我试图通过以下方式来度过争论的日子:

并且还测试了:

有人可以给我一个关于如何使用 Django 管理员传递参数的线索吗?

此致,

0 投票
1 回答
1257 浏览

django - Django Celerybeat PeriodicTask 运行远远超出预期

我正在为 Django、Celery、djcelery 和 PeriodicTasks 苦苦挣扎。

我创建了一个任务来为 Adsense 提取报告以生成实时统计报告。这是我的任务:

我正在使用 Celery 和 RabbitMQ。这是我的设置:

乍一看,一切似乎都正常,但在打开记录器并观察它运行后,我发现它至少连续四次运行该任务 - 有时更多。它似乎也每分钟运行一次,而不是每两分钟运行一次。我尝试将 run_every 更改为使用 crontab,但我得到了相同的结果。

我正在使用主管开始 celerybeat。这是我使用的命令:

关于为什么它没有按预期工作的任何想法?

哦,还有一件事,在日期变化之后,它会继续使用它第一次运行的日期范围。因此,随着时间的推移,它会继续获取任务开始运行当天的统计信息 - 除非我在某个时候手动运行任务,否则它会更改为我上次手动运行它的日期。有人能告诉我为什么会这样吗?

0 投票
1 回答
1542 浏览

django - 从 celerybeat 中删除未注册的任务

当我试图弄清楚 celery 是如何工作的,或者更具体地说是它如何与 Django 一起工作时,我将示例 CELERYBEAT_SCHEDULE 设置添加到我的设置文件中。它将 task.add 添加到我的任务队列中。我已经删除了该设置,但它一直在尝试添加该任务。我每天在哨兵中收到成千上万的错误报告,上面写着:

如何让 celetbeat 停止尝试添加此任务?

0 投票
1 回答
1082 浏览

mysql - django 和 celery 节拍调度程序没有数据库条目

我的问题是节拍调度程序没有将条目存储在“任务”和“工作人员”表中。我用 django 和 celery。在我的数据库(MySQL)中,我添加了一个间隔为 120 秒的周期性测试“估计区域”。

这就是我开始我的工人的方式:

在我启动工作人员后,我可以在终端中看到工作人员正在工作,并且调度程序从数据库中挑选出周期性任务并对其进行操作。

我的任务是如何定义的:

终端显示:

任务“估计区域”返回给我一个 results.csv 文件,所以我可以看到工作人员和节拍调度程序工作。但在那之后,我的 django 管理面板中的“任务”或“工人”中没有数据库条目。

这是我在 settings.py 中的芹菜设置

` CELERY_DISABLE_RATE_LIMITS = True CELERY_TASK_SERIALIZER = 'pickle' CELERY_RESULT_SERIALIZER = 'pickle' CELERY_IMPORTS = ('fv.tasks') CELERY_RESULT_PERSISTENT = True

我希望任何人都可以帮助我:)

0 投票
0 回答
395 浏览

python - 将 celery 和 celerybeat 配置放在同一个文件中时,celerybeat 引发异常“无法腌制模块对象”?

我将 celery/celerybeat 配置放在相同的 settings.py 中:

当我启动 celerybeat 时,它会引发 TypeError:('can't pickle module object')

如果我删除“CELERY_IMPORTS”行,celerybeat 可以正常工作。

我怀疑“CELERY_IMPORTS”如何影响 celerybeat 而 celerybeat 不需要“CELERY_INPORTS”