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

python - 用 celery 运行“独特”的任务

我使用 celery 来更新我的新闻聚合站点中的 RSS 提要。我为每个提要使用一个@task,而且一切似乎都很好。

有一个细节我不确定如何处理好:所有提要每分钟使用@periodic_task 更新一次,但是如果启动新任务时提要仍在从上一个定期任务更新怎么办?(例如,如果提要真的很慢,或者离线并且任务处于重试循环中)

目前我存储任务结果并检查它们的状态,如下所示:

也许有一种更复杂/更强大的方法可以使用我错过的一些芹菜机制来实现相同的结果?

0 投票
2 回答
2575 浏览

python - 芹菜不返回结果

出于某种原因,每当我在 Celery 中创建和运行新任务时,返回结果都会出现问题。第一个任务完美返回,但对于所有后续任务,结果始终处于挂起状态。我检查了 Celery 日志,它得到了正确的结果,没有错误,但它无法返回它。

如果有帮助,我正在运行 rabbitmq 作为我的后端。

0 投票
1 回答
1028 浏览

rabbitmq - 使用 Celery 和 RabbitMQ 的简单队列

我正在尝试实现一个一次执行一项任务的简单队列。使用 Celery 将任务从主线程中卸载并在 Celery 配置中设置 concurrency=1 可以正常工作,但我可能希望为其他任务使用更多并发工作人员。

有没有办法告诉 Celery 或 RabbitMQ 不要为一个任务使用多个并发工作人员(除非强制并发 = 1)?我在文档中找不到任何东西,但也许这些工具不是为线性队列设计的?

谢谢!

0 投票
3 回答
1261 浏览

python - 如何捕获在执行一系列 Celery 任务期间生成的所有 python 日志记录?

我想将我自己开发的任务队列系统转换为基于 Celery 的任务队列,但我目前拥有的一项功能让我有些苦恼。

现在,我的任务队列操作非常粗糙;我运行作业(生成数据并将其上传到另一台服务器),使用 Nose 日志捕获库的变体收集日志记录,然后将任务的日志记录作为详细结果记录存储在应用程序数据库中。

我想将其分解为三个任务:

  1. 收集数据
  2. 上传数据
  3. 报告结果(包括前两个任务的所有日志记录)

这里真正的关键是日志收集。现在,使用日志捕获,我对在数据生成和上传过程中进行的每个日志调用都有一系列日志记录。这些是诊断目的所必需的。鉴于任务甚至不能保证在同一个进程中运行,尚不清楚我将如何在 Celery 任务队列中完成此任务。

我对这个问题的理想解决方案将是一种微不足道且理想的微创方法,用于在前任任务 (1、2) 期间捕获所有日志记录并使其可用于报告任务 (3)

我是否最好保持对我的任务定义的粗粒度,并将所有这些工作放在一个任务中?或者有没有办法传递现有的捕获日志以便在最后收集它?

0 投票
1 回答
546 浏览

python - FreeBSD 上是否有用于 Celery 的有效 rc 脚本?

我在 FreeBSD 上为 celeryd 编写了一个 rc 脚本,但我不禁认为一定有更好的方法。 celeryd不会自行守护进程,而且似乎也很难响应 sigterm,因此开始工作可能会很复杂。

这是其他人以前解决过的问题吗?

0 投票
1 回答
1772 浏览

python - 在 Celery 任务中使用 Redis 连接和保存数据

我有一个将数据保存到 Redis 的对象。它需要尽可能少地阻塞,所以我决定使用 Celery 来卸载任务。当我尝试 .save() 芹菜之外的对象时,它连接到 Redis 并很好地存储数据。但是,当我尝试从 Celery 任务中执行完全相同的操作时,它看起来像是在运行,但是没有与 Redis 的连接,没有异常,没有错误输出,并且没有任何内容保存到 Redis 服务器。我用下面的一小段代码复制了这个问题。测试.py:

这是 Python 控制台输出:

这是 celeryd 的输出:

任何帮助都是极好的!我已经在多台计算机上复制了这个问题,有多个 python 版本。

0 投票
1 回答
649 浏览

python - 具有非同质任务的芹菜

我有两个芹菜工人,工人 1 有任务 A 和 B,工人 2 有任务 A、B 和 C。如果我提交任务 C,它似乎没有在有任务 C 的芹菜工人中执行;有什么方法可以确保只有工人 2 被分配任务 C?

0 投票
1 回答
4793 浏览

python - 是否可以将芹菜用于同步任务?

也几乎同步工作;基本上,我想将 Web 应用程序背后的数据访问和处理委托给大多数作业的任务队列。对于 celery 任务,我认为合理的最快延迟是多少?

更新(澄清)

我想为了清楚起见,我应该解释一下吞吐量——虽然不错——对我来说不是一个必要的问题。我暂时还不需要朝那个方向扩展。延迟是我目前要评估的唯一标准。如果这是唯一可行的方法,我task.apply很乐意使用,但我想把工作做得更好。

0 投票
2 回答
1817 浏览

python - 当任务结果很大时,我应该如何使用 Celery?

处理在 Celery 中执行的结果很大的任务的最佳方法是什么?我正在考虑诸如表转储之类的事情,我可能会在其中返回数百兆字节的数据。

我认为将消息塞入结果数据库的幼稚方法在这里不会为我服务,更不用说如果我将 AMQP 用于我的结果后端。但是,我有一些延迟是一个问题;根据导出的特定实例,有时我必须阻塞直到它返回并直接从任务客户端发出导出数据(导出内容的 HTTP 请求进来,它不存在,但必须在响应该请求...无论需要多长时间)

那么,为此编写任务的最佳方式是什么?

0 投票
2 回答
110 浏览

python - 如何用芹菜下载异地文件并将其添加到我的 Django 数据库中?

我正在尝试使用 django 和 celery 执行以下操作。这是我正在做的简化版本

没有返回错误,但 pdf_file 仍然为空。有任何想法吗?

谢谢!