问题标签 [celery]

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 投票
2 回答
1103 浏览

python - 如何布局队列/工作者结构以支持多个环境的大型任务?

对于基于 Python/Django/Celery 的部署工具,我们有以下设置:

  1. 我们目前使用默认的 Celery 设置。(一个队列+交换称为“芹菜”。)
  2. 队列中的每个任务代表一个部署操作。
  3. 环境的每个任务都以可能需要(非常)长时间的同步阶段结束。

需要满足以下规范:

  1. 并发性:多个环境的任务应该同时执行。
  2. 锁定:每个环境最多可能同时运行一个任务(即环境锁定)。
  3. 吞吐量优化:当单个环境有多个任务时,可以合并它们的同步阶段进行优化。因此,如果一个任务即将结束,它应该检查队列中是否有新任务在等待这个环境,如果有,则跳过其同步阶段。

实现这一点的首选方法是什么?

一些想法:

  • 我想说我们必须设置多个队列:每个环境一个,并且让N celery worker 专门处理一个队列,每个。(这将解决规范 1+2。)
    但是我们如何让多个 celery worker 专门监听不同的队列呢?
  • 是否有一种干净的方法可以知道队列中有更多任务在等待环境?
0 投票
1 回答
1882 浏览

python - 芹菜中 PeriodicTask run() 方法的自己的参数

我正在编写一个小型 Django 应用程序,我应该能够为每个模型对象创建其定期任务,该任务将以一定的时间间隔执行。我正在为此使用 Celery 应用程序,但我无法理解一件事:

然后我做以下事情:

第一次调用成功,但其他定期调用返回错误 - TypeError: run() 在 celeryd 服务器中恰好采用 2 个非关键字参数(1 个给定)。我可以将自己的参数传递给 PeriodicTaskrun()吗?

0 投票
1 回答
599 浏览

python - 运行 celeryd 时出错

我发布了这个问题(和答案),所以如果将来有人遇到这个问题,你可以用谷歌搜索它。

如果您尝试像这样在 Django 中运行 celeryd:

启动后您会立即收到以下错误:

一条相当神秘的错误消息,没有真正的线索去解决问题。请参阅下面的答案,这样您就不会像我今天那样在此错误上浪费大量时间 :)

0 投票
1 回答
363 浏览

python - 这个 __import__ 功能正确吗?

我有一个名为 的包jiva_tasks,我试图通过 celery 导入它(使用 celeryconfig 的CELERY_IMPORTS属性。celery 使用的导入语句是这样的:

奇怪的是,当使用这种语法时,模块会被导入两次,一次 as jiva_tasks,另一次 as jiva_tasks.(末尾有句点)。现在,芹菜很有可能应该传入全局变量而不是一个空列表,但这对我来说似乎很糟糕。奇怪的是,即使给出了错误的参数,__import__也会导入不是有效的 python 模块名称的东西。

我知道解决这个问题的方法是通过globals,但我想了解为什么我会得到这个结果。这是一个错误,还是我不明白它__import__是如何工作的?

更新:如果我使用它似乎也可以正常工作importlib

更新 2:这是执行该行之前的sys.meta_pathand :sys.import_path__import__

在我看来,没有什么不寻常的地方。但是,我刚刚意识到我正在导入的包是使用 setuptools 的开发命令安装的。这有什么区别吗?

0 投票
2 回答
13884 浏览

messaging - AMQP 与 Websphere MQ

我们正在开发一个支持 AMQP 进行排队的应用程序。我们的一些客户正在使用 Websphere MQ。我只是想知道这两种协议在功能方面的可互换性。我正在使用celery,只要我可以编写 Websphere MQ 后端,它就可以让我抽象出较低级别的东西。我试图弄清楚这将是一个多么困难的挑战。

Websphere MQ 是否提供 AMQP 功能的超集?是否有任何一个可能让我的生活变得困难的“特征”?

0 投票
3 回答
56783 浏览

python - Celery - 获取当前任务的任务 ID

如何从任务中获取任务的 task_id 值?这是我的代码:

这个想法是,当我创建任务的新实例时,我会task_id从任务对象中检索它。然后我使用任务 ID 来确定任务是否已完成。我不想按值跟踪任务,path因为文件在任务完成后被“清理”,并且可能存在也可能不存在。

在上面的示例中,我将如何获得 的值current_task_id

0 投票
1 回答
7747 浏览

python - Django Celery implementation - OSError : [Errno 38] Function not implemented

I installed django-celery and I tried to start up the worker server but I get an OSError that a function isn't implemented. I'm running CentOS release 5.4 (Final) on a VPS:

Am I just totally screwed or is there an easy way to resolve this?

0 投票
1 回答
7419 浏览

django - 在生产环境中运行 Django-Celery

我已经构建了一个 Django Web 应用程序和一些 Django-Piston 服务。使用 Web 界面,用户提交一些数据,这些数据被 POST 到 Web 服务,然后该 Web 服务使用 Django-celery 启动后台任务。

使用 manage.py 在开发环境中一切正常。现在我正在尝试将其转移到适当的 apache 服务器上的生产中。Web 应用程序和 Web 服务在生产中运行良好,但我在将 celeryd 作为守护进程启动时遇到了严重问题。根据这些说明:http : //docs.celeryproject.org/en/latest/tutorials/daemonizing.html#running-the-worker-as-a-daemon 我创建了一个 celeryconfig.py 文件并将其粘贴在/usr/bin 目录(这是 celeryd 在我的 Arch linux 服务器上的位置)。

但是,当我尝试从命令行启动 celeryd 时,出现以下错误:

不知道从这里去哪里。下面是我的 settings.py 部分,因为它与这个问题有关:

0 投票
2 回答
5492 浏览

python - celery-django 找不到设置

我有一个使用Celery运行异步任务的 Django 项目。我正在 Windows XP 机器上进行开发。

启动我的 Django 服务器 ( python manage.py runserver 80) 工作正常,但尝试启动 Celery Daemon ( python manage.py celeryd start) 失败并出现以下错误:

ImportError:无法导入设置“src.settings”(它在 sys.path 上吗?是否有语法错误?):没有名为 src.settings 的模块

sys.path 包含'C:\development\SpaceCorps\src',所以我不确定为什么它找不到这个模块。

这是启动守护程序的完整输出:

0 投票
2 回答
2195 浏览

python - 如何使用 Celery 制作包含所有待处理任务的仪表板?

我想有一个地方可以观看所有待处理的任务。

我不是在谈论作为任务的注册函数/类,而是我可以显示的实际计划作业:名称、task_id、eta、worker 等。

使用 Celery 2.0.2 和 djcelery,我在文档中找到了“inspect”。我试过了:

但它永远挂在dump = i.scheduled().

奇怪,因为否则一切正常。

使用 Ubuntu 10.04、django 1.0 和 virtualenv。