簡體   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