问题标签 [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.
django - celerybeat 设置为 crontab(day_of_month=1) 在一个月内多次发送任务
我有这个设置为 crontab(day_of_month=1) 的任务。但是当它执行任务时,它会继续发送任务,该任务应该执行一次。
从我的tasks.py
我错过了什么吗?
django - Ubuntu 上的 CeleryBeat 问题
我注意到 CeleryBeat 的奇怪问题。我经常使用它来运行对我来说非常重要和重要的周期任务。每隔一段时间(几乎每 2-5 天)我注意到 CeleryBeat 默默地失败了。日志(全部)中没有警告或错误,这真的让我很困惑。
有没有其他方法可以从 celerybeat 获取信息?我的 celeryd 配置中有以下 celery 选项:
还有什么我想念的吗?
[编辑]
临死前我的 celerybeat 日志中的最后一个条目:
如您所见,它确实没有任何信息。我的 django 日志和 celery 日志也没有填满任何错误。
python - Nginx(Django) ImportError: cannot import name celeryd
I tested my project in my local machine, and it worked fine. But after uploading to a remote server(CentOS), I cannot execute celerybeat.
Here is my command.
python manage.py celeryd --events --loglevel=INFO -c 5 --settings=[settings-directory].production
This command works in the local machine(with --settings=[settings-directory].local), but in the remote server, ImportError: cannot import name celeryd
occured.
Setting about celery is in base.py. local.py and production.py import the file. In production.py, there are just DEBUG, static, database settings.
I can import djcelery and celery in shell of the remote machine.
How could I solve this?
--
I think this is a version problem.. I'm reading about celery3.1
django - 在 celery 3.1 中,制作 django 周期性任务
Django 中的东西变化太大,所以我不能使用 3.1。我需要一些帮助。
我阅读了有关在 django 中创建任务的信息,并阅读了Periodic Tasks文档。但我不知道如何在 django 中进行周期性任务。我认为这是因为我的英语水平低..
在旧版本的 Celery 中,我导入了 djcelery和crontab并在settings.py中设置了 CELERYBEAT_SCHEDULE ,并由manage.py执行。
但似乎我不能再以这种方式执行 celery demon 了。比我应该把 CELERYBEAT_SCHEDULE 放在哪里?在文档中的 django 示例中,它们设置os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'proj.settings')
在proj/proj/celery.py中。(1) 那么在settings.py中设置celerybeat (和之前一样)可以吗?
(2) 如果可以的话,一个在 django 中制作周期性任务的小例子将非常有帮助。当我阅读教程时,最令人困惑的部分是File Path。如果您不想提供完整的示例,如果您解释我应该在哪里制作任务、设置节拍和执行守护程序,我将不胜感激。
谢谢阅读。
python - 无法让芹菜工人工作
我一直在研究一个使用 Celery beat 来安排任务的项目。在本地,我一直使用 RabbitMQ 作为代理,一切正常。
当我将我的项目推送到远程服务器时,我将代理更改为 Redis。
celery beat
正如我在控制台中看到的那样,该进程接缝工作正常,它正在调度任务。但工人无法接任务。当我通过在任务上使用 delay() 从 shell 异步调用任务时,即使这样,工作人员也不会拾取任务。
我认为 Redis 可能有些奇怪。然而,情况似乎并非如此。我让我的项目在本地使用 Redis。在服务器上,当我将代理更改为 RabbitMQ 时,即使这样我也遇到了同样的问题。
我的本地机器运行 Mac OS,服务器运行 Debian 6。
可能是什么问题?我如何调试这种情况并让工作人员消费任务并完成工作?我正在使用 Python 2.7。
python - Celery beat args:列表与元组
Celery 文档描述了如何将位置参数作为列表或元组传递给节拍调度任务。
我有一个任务,它需要一个参数,一个整数列表:
我的 celerybeat 时间表如下所示:
我的任务因 "int is not iterable" 而失败TypeError
。根据我的显示器(芹菜花),args 以[1]
.
当我将 args 设为列表时,例如[[1]]
arg 会显示在监视器中,[[1]]
并且它工作正常。
我的问题是:当它是一个元组时,它是如何传递参数的?为什么?
python - Celery Beat:一次限制为单个任务实例
我有 celery beat 和 celery(四名工人)批量做一些加工步骤。其中一项任务大致类似于“对于每个尚未创建 Y 的 X,创建一个 Y”。
该任务以半快速(10 秒)的速度定期运行。任务完成得非常快。还有其他任务正在进行。
我多次遇到过节拍任务明显积压的问题,因此同时执行相同的任务(来自不同的节拍时间),导致错误地重复工作。似乎任务是乱序执行的。
是否可以限制 celery beat 以确保一次只有一个未完成的任务实例?在任务上设置类似
rate_limit=5
的“正确”方法吗?是否可以确保按顺序执行 beat 任务,例如,不是分派任务,而是 beat 将其添加到任务链中?
除了使这些任务本身以原子方式执行并且可以安全地同时执行之外,最好的处理方法是什么?这不是我所期望的击败任务的限制……</p>
任务本身的定义很天真:
这是一个实际的(清理过的)日志:
[00:00.000]
foocorp.tasks.add_y_to_xs 已发送。id->#1[00:00.001]
收到任务:foocorp.tasks.add_y_to_xs[#1][00:10.009]
foocorp.tasks.add_y_to_xs 已发送。id->#2[00:20.024]
foocorp.tasks.add_y_to_xs 已发送。id->#3[00:26.747]
收到任务:foocorp.tasks.add_y_to_xs[#2][00:26.748]
任务池:应用 #2[00:26.752]
收到任务:foocorp.tasks.add_y_to_xs[#3][00:26.769]
接受的任务:foocorp.tasks.add_y_to_xs[#2] pid:26528[00:26.775]
任务 foocorp.tasks.add_y_to_xs[#2] 在 0.0197986490093s 内成功:无[00:26.806]
任务池:应用 #1[00:26.836]
任务池:应用 #3[01:30.020]
接受的任务:foocorp.tasks.add_y_to_xs[#1] pid:26526[01:30.053]
接受的任务:foocorp.tasks.add_y_to_xs[#3] pid:26529[01:30.055]
foocorp.tasks.add_y_to_xs[#1]:为 X id 添加 Y #9725[01:30.070]
foocorp.tasks.add_y_to_xs[#3]:为 X id 添加 Y #9725[01:30.074]
任务 foocorp.tasks.add_y_to_xs[#1] 在 0.0594762689434s 内成功:无[01:30.087]
任务 foocorp.tasks.add_y_to_xs[#3] 在 0.0352867960464s 内成功:无
我们目前使用 Celery 3.1.4 和 RabbitMQ 作为传输。
编辑丹,这是我想出的:
丹,这就是我最终使用的:
以及 celery 任务装饰器(仅用于周期性任务):
python - 芹菜中高效的重复任务?
我每天有大约 250,000 个重复任务;其中大约五分之一可能会以每天不同的预定日期时间进行更新。
这可以在 Celery 中有效地完成吗?- 我担心芹菜的beat.py:
python - 如何在 Celery 中创建子任务
我正在尝试遍历buildings
我的数据库中的许多内容。在每个建筑物apt
中,我为其中的每个生成一个账单building
。这一切都发生在Celery
每月 25 日的计划任务上。账单将在下个月寄出。我知道我可以使用chords
和groups
其他子任务,我只是对如何将它组织成一个巨大的工作机制感到困惑。这是我迄今为止尝试过的(不起作用)。我正在测试使用crontab
和当前时间,以便我可以看到它运行。在生产中,我会将该日期设置为每个月的 25 日。
配置文件:
任务.py:
在发生的事情中,bill_all_buildings
它开始运行,然后它说:
然后什么也没有发生。
python - 使用 django 将 celerybeat 作为守护进程运行的问题
所以我让它正常工作,并且我已经测试过它的性能完全符合它的要求,但我似乎无法让它作为守护进程正常运行。所以对于初学者来说,我正在运行一个 django 应用程序并使用 mongodb 作为后端,我拥有所有必需的模块
目前我可以使用成功运行它
重要的是我的项目文件夹,而 celeryapp 是应用程序(我发现在教程中将它命名为 celery 只是导致它根本不起作用)
所以我创建了文件
并使用
但主要问题似乎是我的配置在我的 Django settings.py 中。
出于某种原因,它似乎从未从那里读取我的设置。我什至有我的 CELERY_APP = matter.celeryapp 但这似乎不起作用。
我知道这是不正确的,因为它使用日志文件显示它使用的是默认代理而不是 mongo