celery相关内容

Django Celery:只执行一个长时间运行的进程的实例

我有一个长时间运行的进程,必须每五分钟运行一次,但不应同时运行多个进程实例.该过程通常不应超过五分钟,但我想确保第二个实例在运行结束时不会启动. 根据 上一页推荐,我正在使用 Django Celery 来安排这个长时间运行的任务. 我认为周期性任务不会起作用,因为如果我有 5 分钟的周期,如果另一个任务实例已经在运行,我不希望执行第二个任务. 我目前的实验如下:8:55,任务的 ..
发布时间:2022-01-11 17:51:49 其他开发

在 Celery 工作人员中捕获 Heroku SIGTERM 以优雅地关闭工作人员

我对此进行了大量研究,但我很惊讶我还没有在任何地方找到一个好的答案. 我在 Heroku 上运行一个大型应用程序,并且我有一些运行很长时间的 celery 任务,并在任务结束时保存结果.每次我在 Heroku 上重新部署时,它都会发送 SIGTERM(最终发送 SIGKILL)并杀死我正在运行的工作人员.我正在尝试找到一种方法让工作实例优雅地关闭自己并重新排队以供稍后处理,以便最终我们可以保 ..
发布时间:2022-01-11 17:47:25 Python

使用 Celery 动态创建队列

我正在使用 Django、Celery 和 RabbitMQ 编写一个邮件列表管理器.当有消息进来时,会为每个接收者执行一个任务.所有任务都进入一个队列,一个或多个工作人员使用队列中的任务,构建电子邮件消息并发送它们. 单个队列会导致公平性问题:如果一条消息进入一个大型邮件列表,则会将大量任务添加到队列中,并且其他消息无法通过其他较小的邮件列表,直到所有消息都到达大名单已发送.我怎样才能找到 ..
发布时间:2022-01-11 17:47:00 其他开发

芹菜广播与 RabbitMQ 扇出

我最近一直在使用 Celery,但我不喜欢它.它的配置杂乱无章、过于复杂且文档记录不完善. 我想使用 Celery 从单个生产者向多个消费者发送广播消息.令我困惑的是 Celery 术语与底层传输 RabbitMQ 术语之间的差异. 在 RabbitMQ 中,您可以有一个 fanout Exchange 和多个队列广播消息: 但在 Celery 中,这些术语都搞砸了:在这里你可以 ..
发布时间:2022-01-11 17:45:23 其他开发

RabbitMQ 中的 celeryev 队列变得非常大

我在rabbitmq 上使用芹菜.我一直在向队列发送数千条消息,它们正在成功处理,一切正常.然而,几个rabbitmq队列中的消息数量正在增长相当大(队列中有数十万个项目).队列被命名为 celeryev.[...](见下面的截图).这是适当的行为吗?这些队列的目的是什么,不应该定期清除它们吗?有没有办法更频繁地清除它们,我认为它们占用了相当多的磁盘空间. 解决方案 您可以使用 CELER ..
发布时间:2022-01-11 17:44:48 其他开发

撤销 celery 的任务

我想明确撤销 celery 的任务.这就是我目前的做法:- from celery.task.control import revoke撤销(task_id,终止=真) 其中task_id是string(也尝试过将其转换为UUID uuid.UUID(task_id).hex). 经过上述过程,当我再次启动 celery celery worker -A proj 时,它仍然使用相同的消 ..
发布时间:2022-01-11 17:44:10 Python

与 celery 正在进行的任务交互

我们有一个基于 rabbitMQ 和 Celery 的分布式架构.我们可以毫无问题地并行启动多个任务.扩展性好. 现在我们需要远程控制任务:暂停、恢复、取消.我们找到的唯一解决方案是在 Celery 任务中对另一个任务进行 RPC 调用,该任务在 DB 请求后回复命令.Celery 任务和 RPC 任务不在同一台机器上,只有 RPC 任务可以访问数据库. 您对如何改进它并轻松与正在进行 ..
发布时间:2022-01-11 17:44:02 Python

为什么 RabbitMQ 不在持久队列上持久化消息?

我通过 Celery 将 RabbitMQ 与 Django 一起使用.我使用的是最基本的设置: # RabbitMQ 连接设置BROKER_HOST = '本地主机'BROKER_PORT = '5672'BROKER_USER = '客人'BROKER_PASSWORD = '客人'BROKER_VHOST = '/' 我导入了一个 Celery 任务并将其排入队列以在一年后运行.从 iP ..
发布时间:2022-01-11 17:42:25 Python

Django 和 Celery 的示例:周期性任务

我一直在与 Django/Celery 文档作斗争,需要一些帮助. 我希望能够使用 django-celery 运行定期任务.我在互联网(和文档)中看到了几种不同的格式和模式,说明应该如何使用 Celery 实现这一目标...... 有人可以提供创建、注册和执行 django-celery 周期性任务的基本功能示例吗?特别是,我想知道我是否应该编写一个扩展 PeriodicTask 类 ..
发布时间:2022-01-11 17:39:06 其他开发

为什么使用 Celery 而不是 RabbitMQ?

据我了解,Celery 是一个分布式任务队列,这意味着它唯一应该做的就是将任务/作业分派到其他服务器并取回结果.RabbitMQ 是一个消息队列,仅此而已.但是,worker 可以只监听 MQ 并在收到消息时执行任务.这完全实现了 Celery 提供的功能,那么为什么还需要 Celery? 解决方案 你是对的,你根本不需要 Celery.当你设计一个分布式系统时,有很多选择,没有适合所有情 ..
发布时间:2022-01-11 17:36:10 Python

启动 celery worker 并为广播队列启用它

我正在尝试启动 celery worker,所以它只听单个队列.这不是问题,我可以这样做: python -m celery worker -A my_module -Q my_queue -c 1 但现在我也希望这个 my_queue 队列成为广播队列,所以我在 celeryconfig 中这样做: from kombu.common import BroadcastCELERY_QUEU ..
发布时间:2022-01-11 17:33:22 Python

如何从 rabbitMQ 中永久删除 celery 任务?

我目前的 celery 设置有大约 10,000 个计划任务.我没有意识到计划任务是什么,并决定提前几个月使用它们发送后续电子邮件. 回想起来,将任务安排在未来超过 1 小时可能永远不是一个好主意,因为每次重新启动工作器时,它都必须重新接收来自 rabbitMQ 的每个计划任务,然后它们都只是坐在记忆. 我的问题是,如果我必须撤销一项任务,它不仅仅是删除它.任务保留在内存中,但撤销队列 ..
发布时间:2022-01-11 17:27:57 Python

芹菜:如何限制队列中的任务数量并在满时停止喂食?

我对 Celery 很陌生,这是我的问题: 假设我有一个脚本,它应该不断地从数据库中获取新数据并使用 Celery 将其发送给工作人员. tasks.py # Celery 任务从芹菜进口芹菜app = Celery('tasks', broker='amqp://guest@localhost/')@app.task定义进程数据(x):# 用 x 做一些事情经过 fetch_db ..
发布时间:2022-01-11 17:27:04 Python

作业不通过使用 RabbitMQ 运行 celery 的 Airflow 执行

下面是我使用的配置 [核心]# 气流的主文件夹,默认为 ~/airflowairflow_home =/root/气流# 气流管道所在的文件夹,很可能是# 代码库中的子文件夹dags_folder =/root/airflow/dags#气流应该存储其日志文件的文件夹.这个位置base_log_folder =/root/airflow/logs# 可以为日志备份提供一个 S3 位置# 对于 S ..
发布时间:2022-01-11 17:26:15 其他开发

通知芹菜任务工人关闭

我将 celery 2.4.1 与 python 2.6、rabbitmq 后端和 django 一起使用.如果工人关闭,我希望我的任务能够正确清理.据我所知,您无法提供任务析构函数,因此我尝试连接到 worker_shutdown 信号. 注意:AbortableTask 仅适用于数据库后端,所以我不能使用它. 从 celery.signals 导入 worker_shutdown@任务 ..
发布时间:2022-01-11 17:24:45 Python