繁体   English   中英

如何在 Airflow 工作人员上执行普通的 Celery 任务

[英]How to execute plain Celery tasks on Airflow workers

我目前有 Airflow 设置并使用 CeleryExecutor 作为后端正常工作以提供水平缩放。 这非常有效,尤其是当工作节点位于 EC2 上的自动缩放组中时。

除了 Airflow 之外,我还使用普通的 Celery 来处理来自 Flask/Python 的简单异步任务(不需要整个管道)。 到目前为止,这些普通的 Celery 任务的容量非常小,我只是在与 Flask 相同的机器上运行普通的 Celery 工作程序。 现在需要在系统中运行大量普通的 Celery 任务,所以我还需要扩展我的普通 Celery 任务。

一种方法是在 Airflow 工作服务器上运行普通的 Celery 工作服务(以受益于自动缩放等),但这似乎不是一个优雅的解决方案,因为它创建了两种不同的“类型” Celery 工人在同一台机器上。 My question is whether there is some combination of configuration settings I can pass to my plain Celery app that will cause @celery.task decorated functions to be executed directly on my Airflow worker cluster as a plain Celery task, completely bypassing the Airflow middleware.

谢谢您的帮助。

如果我没记错的话,该应用程序是airflow.executors.celery_executor.app 尝试celery -A airflow.executors.celery_executor.app inspect active的示例以对其进行测试。 但是,我建议您不要这样做,因为您的 Celery 任务可能会影响 Airflow DAG 的执行,并且可能会影响 SLA。

我们在我工作的公司所做的正是您所建议的 - 我们维护一个大型 Celery 集群,有时我们会将一些 Airflow 任务的执行卸载到我们的 Z31D15D604F300D27A93591A35ACE08E 集群,具体取决于用例 4 集群。 当我们的 Airflow DAG 中的任务实际上触发了数以万计的小作业时,这特别方便。 我们的 Celery 集群在繁忙的一天运行 800 万个任务。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM