问题标签 [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 投票
4 回答
3000 浏览

python - 在 celerybeat 中一次只运行一个任务

我有一个任务,我使用 celerybeat 每分钟执行一次。它工作正常。但有时,该任务需要几秒钟多于一分钟才能运行,因为该任务的两个实例会运行。这会导致一些混乱的竞争条件。

我可以(并且可能应该)修复我的任务以使其正常工作,但我想知道 celery 是否有任何内置方法来确保这一点。我粗略的 Google 搜索和 RTFM 没有产生任何结果。

0 投票
2 回答
742 浏览

python - celerybeat 从哪里得到它在启动过程中显示的配置

当我开始 celerybeat 时,manage.py celerybeat我看到了这个:

我想知道它是从哪个文件获得上述配置的。

我想将 celery 的数据库更改为 MySQL。我怎样才能做到这一点?

0 投票
1 回答
2454 浏览

django - Celery 和 Redis 不断耗尽内存

我有一个部署到 Heroku 的 Django 应用程序,其中一个工作进程运行 celery(+ celerycam 用于监控)。我使用 RedisToGo 的 Redis 数据库作为代理。我注意到 Redis 总是内存不足。

这就是我的 procfile 的样子:

这是 KEYS '*' 的输出:

  1. “_kombu.binding.celeryd.pidbox”
  2. “celeryev.643a99be-74e8-44e1-8c67-fdd9891a5326”
  3. “celeryev.f7a1d511-448b-42ad-9e51-52baee60e977”
  4. “_kombu.binding.celeryev”
  5. “celeryev.d4bd2c8d-57ea-4058-8597-e48f874698ca”
  6. `_kombu.binding.celery"

celeryev.643a99be-74e8-44e1-8c67-fdd9891a5326充满了这些消息:

知道我可以做些什么来定期清除这些消息吗?

0 投票
1 回答
1196 浏览

celery - 解决 celerybeat 作为单点故障的问题

我正在寻找推荐的解决方案来解决 celerybeat 作为 celery/rabbitmq 部署的单点故障。到目前为止,通过搜索网络,我没有找到任何有意义的东西。

就我而言,每天一次的定时调度程序会启动一系列可能运行半天或更长时间的作业。由于只能有一个 celerybeat 实例,如果它或运行它的服务器发生问题,将不会运行关键作业。

我希望已经有一个可行的解决方案,因为我不能是唯一需要可靠(集群或类似)调度程序的人。如果我不需要的话,我不想求助于某种数据库支持的调度程序。

0 投票
2 回答
5196 浏览

django - 如何使用 celery 和 Django 以编程方式生成 celerybeat 条目

我希望能够以编程方式生成 celerybeat 条目并在添加条目时重新同步 celerybeat。这里的文档状态

默认情况下,条目取自 CELERYBEAT_SCHEDULE 设置,但也可以使用自定义存储,例如将条目存储在 SQL 数据库中。

所以我想弄清楚我需要扩展哪些类才能做到这一点。

我一直在查看celery scheduler docsdjcelery api docs但是关于其中一些方法的作用的文档是不存在的,因此将深入研究一些来源,只是希望有人能指出我正确的方向。

我想我正在做的高水平工作会有所帮助......作为用户,我需要能够从一组预定义的任务中进行选择,并为用户提供一种选择某种自定义计划的方法执行,例如每天/每周/每月以及什么日期和时间。

这也是在带有 djcelery 的 Django 中。

更新

我看到了 djcelery 管理员的代码,但不清楚这些数据是如何被持久化的。我目前有一个addTask看起来像这样的通用视图:

数据库中的数据看起来是正确的,但是当守护程序运行时,它会出现以下错误:

[2012-03-06 00:23:07,926:警告/节拍] 过程节拍:
[2012-03-06 00:23:07,926:警告/节拍] 回溯(最后一次通话):
[2012-03-06 00 :23:07,926: WARNING/Beat] 文件“/usr/lib/python2.7/multiprocessing/process.py”,第 258 行,在 _bootstrap
[2012-03-06 00:23:07,926: WARNING/Beat] self.运行()
[2012-03-06 00:23:07,927:警告/节拍]文件“/home/dchesterman/Documents/PythonDev/.virtualenvs/ros/local/lib/python2.7/site-packages/celery/beat .py",第 464 行,运行中
[2012-03-06 00:23:07,927:警告/节拍] self.service.start(embedded_process=True)
[2012-03-06 00:23:07,927:警告/节拍] 文件“/home/dchesterman/Documents/PythonDev /.virtualenvs/ros/local/lib/python2.7/site-packages/celery/beat.py”,第 403 行,开始
[2012-03-06 00:23:07,927:警告/节拍] 间隔 = self.scheduler.tick()
[2012-03-06 00:23:07,927:警告/节拍] 文件“/home/dchesterman/Documents/ PythonDev/.virtualenvs/ros/local/lib/python2.7/site-packages/celery/beat.py",第 194 行,在刻度
[2012-03-06 00:23:07,927: WARNING/Beat] next_time_to_run = self .maybe_due(entry, self.publisher)
[2012-03-06 00:23:07,927: WARNING/Beat] 文件“/home/dchesterman/Documents/PythonDev/.virtualenvs/ros/local/lib/python2.7/site -packages/celery/beat.py",第 170 行,在 may_due
[2012-03-06 00:23:07,927: WARNING/Beat] is_due, next_time_to_run = entry.is_due()
[2012-03-06 00:23:07,928:警告/节拍] 文件“/home/dchesterman/Documents/PythonDev/.virtualenvs/ros/local/lib/python2.7/site-packages/djcelery/schedulers.py” ,第 54 行,在 is_due
[2012-03-06 00:23:07,928: WARNING/Beat] return self.schedule.is_due(self.last_run_at)
[2012-03-06 00:23:07,928: WARNING/Beat] AttributeError : 'NoneType' 对象没有属性 'is_due'

我不确定为什么我的日程安排不使用默认设置is_due()

0 投票
1 回答
606 浏览

python - 有限的芹菜节拍任务

我在与第 3 方 API 集成的项目中使用 Celery。我需要将文件发送到服务进行处理。发送文件后,我需要每 10 秒请求一次处理状态,直到完成。

正如我现在所拥有的,主要任务将分拆子任务以检查处理状态。我希望这些子任务像有限的芹菜节拍任务一样。当我将其称为子任务时,我想开始任务生命,并且我想在任务完成时结束它。

实现这一目标的最佳方法是什么?

0 投票
8 回答
32417 浏览

python - 如何向 Celery (celerybeat) 动态添加/删除周期性任务

如果我有一个定义如下的函数:

有没有办法将此函数动态添加为 celery PeriodicTask 并在运行时启动它?我希望能够做类似(伪代码)的事情:

我还想使用(伪代码)之类的东西动态停止或删除该任务:

或者

仅供参考,我没有使用 djcelery,它可以让您通过 django 管理员管理定期任务。

0 投票
1 回答
1169 浏览

django-celery - Celerybeat 启动后立即关闭

我有一个使用 celeryd 和 celerybeat 的 django 应用程序。两者都设置为作为守护程序运行。celerybeat 任务不会被执行,因为 celerybeat 没有正确启动。根据日志,它立即关闭:

我从 /etc/int.d/celerybeat start 开始

这是 /etc/default/celerybeat 配置:

任务计划在settings.py中设置:

当我使用 ./manage.py celerybeat 从 shell 运行 celerybeat 时,它似乎运行良好。

celeryd 配置中还有一个 celerybeat 部分,但我认为其中一个被忽略了。

问候西蒙

0 投票
1 回答
607 浏览

django - Celerybeat - Django 的定期任务

我不确定事情如何组合在一起..

我有一个包含活动活动的应用程序,可以宣布获胜者等,并为活动发送提醒。该活动是用 django 创建的,在活动模型中,我有一个字段,表示每 X 天、每周或每小时通知一次获胜者。因此,对于本次活动,获奖者必须在每周五公布。这是每个广告系列,可能有多个广告系列具有不同的获胜者和提醒设置。

我不确定从哪里开始 celerybeat 任务?是否应该保存模型?但是如果你改变一些东西并再次保存模型呢?它不会创建另一个任务,然后导致发送 2 个或更多提醒等吗?

0 投票
3 回答
11284 浏览

celery - 禁用 celerybeat 的 pidfile

celeryd不需要pidfile,但celerybeat似乎。有没有办法禁用它?我正在使用 Upstart 来管理进程,因此使用 pidfile 是多余的。