问题标签 [celeryd]
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.
python - 如何从脚本/模块 __main__ 启动 Celery worker?
我已经Celery
在一个模块中定义了一个应用程序,现在我想从它的同一个模块启动工作程序__main__
,即通过运行模块python -m
而不是celery
从命令行。我试过这个:
但现在 Celery 认为我正在运行没有参数的工人:
使用消息是您从中获得的消息celery --help
,就好像它没有收到命令一样。我也试过
但这抱怨-A
不被认可。
那么我该怎么做呢?或者,我如何将回调传递给工作人员以使其记录有关其配置的信息?
celery - 使用 ckanext-archiver 时命令“celeryd”未知
我使用 CKAN 作为我的开放数据门户,并按照https://github.com/ckan/ckanext-archiver上的说明安装 Archiver Extension 。我已经安装了 celery,如图所示:
但我无法运行它。
我的 CKAN 根目录:usr/lib/ckan/default/src 到 ckan 配置文件的路径:/etc/ckan/default
希望有人可以帮助解决我的问题。谢谢。
python - “芹菜停止”不起作用
我以一种不常见的方式使用 celery - 我在 celery 启动时创建自定义进程,这个进程应该在 celery 运行时一直运行。芹菜工人使用这个过程来完成他们的任务(不需要详细信息)。
我从命令行运行 celery,一切正常:
但是当我celeryd
用来守护芹菜时,没有办法阻止它。命令celeryd stop
试图停止芹菜,但从未结束。
当我在这两种情况下检查进程树时,存在差异 - 从命令行运行时,父进程显然是 celery 进程(主进程,其中有 celery 工人作为子进程)。杀死(停止)父 celery 进程将停止所有 celery 工人和我的自定义进程。
但是当使用 运行时celeryd
,我的自定义进程有父进程/sbin/init
- 并且调用celeryd stop
不起作用 - 似乎主 celery 进程正在等待某些东西,或者无法停止我的自定义进程,因为它不是 celery 的子进程。
我对流程了解不多,也不容易找到信息,因为我不知道我应该搜索什么,所以任何提示都值得赞赏。
python - 芹菜结果错误“参数必须是列表或元组”
我正在运行一个 Django 网站并且刚刚让 Celery 运行,但我遇到了令人困惑的错误。以下是代码的结构。
在测试.py 中:
在tasks.py中:
在 mainapp/settings.py 中:
芹菜调试控制台日志必须按列表/元组:
我得到的错误如上所述,AsyncResult(c.id).result: task args must be a list or tuple
。这应该是一个简单的解决方案,但事实并非如此。当我把它列成这样的列表时:
然后它改变主意并告诉我AsyncResult(c.id).result: int() argument must be a string or a number, not 'list'
正如你可以想象的那样,我对可能是什么问题感到非常困惑。
编辑
任务.py
测试.py
function.app 打印
django - 在窗户上运行芹菜
我正在使用 Django,我的开发环境是 Windows。昨天我花了一整天的时间试图用 RabbitMQ 在我的笔记本电脑上运行 celery。我浏览了所有教程,并没有提到关于 Windows 的特别内容。我遵循了芹菜的官方文档:http: //celery.readthedocs.org/en/latest/django/first-steps-with-django.html
最终我尝试在 Ubuntu 上运行它,一切正常。使用 celery 或 manage.py celeryd 运行后,worker 卡住了:
python manage.py celery worker -E -l 调试
我试图从 cygwin 运行 celeryd,但它也没有用。我的 RabbitMQ 配置没问题,我看到 django 能够向 RabbitMQ 发送消息。
我确定这与 Windows 有关,而不是缺陷配置。这是我的配置:
我还使用了 'localhost' 而不是 127.0.0.1。
有人对 Windows 上的 celery 有所了解吗?还有其他建议吗?
python - 如何使用普通 celery 命令将 celery 作为守护进程运行
我有一个 django 应用程序,我正在使用 celery 任务在后台执行一些 csv 处理,所以我安装了rabbitmq-server
这样sudo apt-get install rabbitmq-server
的命令,rabbitmq-server 已安装并成功运行。
我在tasks.py
应用程序内的模块中有一些芹菜任务代码并运行如下芹菜
它工作正常并在后台成功执行 csv 文件,但现在我只想守护上面的命令,我搜索了任何守护它的选项,但我没有找到任何要传递-D
的参数,比如守护上面的命令。那么无论如何我可以守护上述命令并使芹菜运行吗?
rabbitmq - 如果有空闲进程,如何强制 celery 消耗下一个任务?
我有 celery 设置来从 RabbitMQ 获取任务并且事情正常工作,但我注意到以下行为(T
:任务,P
:进程):
此时,没有其他任务开始运行,尽管我将并发设置为 6 并且只有一个进程处于活动状态。我已经在 celery-flower 上尝试了add_consumer命令,但似乎没有任何反应。我可以在 RabbitMQ 上看到有消息ACK
还没有,并且状态中的消息READY
刚刚开始堆积,因为它们不会再被消耗约 2 小时。
有没有办法设置 celery 以便每当一个进程空闲时,它将消耗下一个任务,而不是等待原始批次完全完成?
python - 芹菜工人没有填满并发槽
我有一个并发 4 的工作人员。我看到 4 个进程开始在花中,一切看起来都很好。
如果我在 shell 中执行此操作,那么我会看到 4 个工作人员接受任务,其余的被保留,它一次处理 4 个,直到队列为空。
但是,如果我逐行执行此操作,则只有前两个任务会被积极处理,然后从那时起它一次只处理两个。
有任何想法吗?
django - 芹菜工人停止使用亚马逊 sqs
我正在使用带有 sqs 的 celery 3.1.9。我有工人 common_w 作为守护进程运行。它适用于 sqs 上的常见队列。工作人员意外停止处理任务。没有异常和错误。
带有选项 -l DEBUG 的最后日志:
更新: strace 说:
然后我在配置中设置:
直到它工作正常...
multithreading - 每个核心的最佳芹菜工人数量是多少?
celery 文档没有太多关于每台机器使用的 celery 工人的最佳数量的信息。我相信默认情况下 celery 会为每个机器核心创建一个工人。
我从实验中知道,在单核机器上,启动更多 celery 工人绝对是有益的(默认是 1 个工人,因为 1 个核心)。我正在寻找增加更多工人的回报略微递减的门槛——每个核心的最佳工人数量。我目前正在使用 celery 守护进程,其中守护进程配置文件 celeryd 具有以下行:
我的意图是为每个核心创建 3 个工人(所以如果我启动一台 4 核机器,总共会有 12 个工人)。我这样做是否正确,或者无论核心数量如何,这只会启动 3 个工作人员?