保证一些操作符会在同一个airflowworker上执行

mar*_*gaz 5 airflow

我有一个 DAG

  1. 从云存储下载 csv 文件
  2. 通过 https 将 csv 文件上传到第三方

我正在默认使用的气流集群CeleryExecutor,所以我担心在某些时候当我扩大工作人员数量时,这些任务可能会在不同的工作人员上执行。例如。工作人员 A 进行下载,工作人员 B 尝试上传,但找不到该文件(因为它在工作人员 A 上)

是否有可能以某种方式保证下载和上传操作符将在同一个气流工作线程上执行?

cr0*_*IAN 2

对于此类用例,我们有两种解决方案:

  1. 使用两个工作人员共享的网络安装驱动器,以便下载和上传任务都可以访问同一文件系统
  2. 使用特定于工作人员的气流队列。如果只有一名工作人员正在侦听该队列,您将保证两者都可以访问同一文件系统。请注意,每个工作线程可以侦听多个队列,因此您可以让它侦听“默认”队列以及用于此任务的自定义队列。