Airflow 有没有办法通过SimpleHttpOperator在气流中通过REST上传文件?

Airflow 有没有办法通过SimpleHttpOperator在气流中通过REST上传文件?,airflow,airflow-operator,Airflow,Airflow Operator,我正在尝试创建一个气流DAG来查询一些数据,将其保存为CSV文件并将其上载到RESTAPI端点。我使用shell脚本和CURL命令实现了这一点,如下所示: curl --location --request POST 'https://my.endpoint.com/automations-file-service/automations/fileupload/files' \ --header 'X-API-TOKEN: my_token' \ --form 'file=@/Users/myu

我正在尝试创建一个气流DAG来查询一些数据,将其保存为CSV文件并将其上载到RESTAPI端点。我使用shell脚本和CURL命令实现了这一点,如下所示:

curl --location --request POST 'https://my.endpoint.com/automations-file-service/automations/fileupload/files' \
--header 'X-API-TOKEN: my_token' \
--form 'file=@/Users/myuser/myfiles/all_20200707_2.csv'

我试图将其移动到气流,并希望通过SimpleHttpOperator将CURL命令转换为气流。问题是,我在操作符中找不到任何可以向文件添加路径的参数,没有“form”参数。有人在Airflow中实现过类似的功能吗?谢谢

因此,如果不提供或编写自己的代码,就无法做到这一点。你有几种方法可以做到这一点。子类化
SimpleHttpOperator
并重写execute方法,以便使用正确的参数调用
HttpHook
。根据您的具体情况对
BaseOperator
进行子类化,并基本上执行相同的操作。或者将Python功能写入Python可调用函数,并使用
PythonOperator

细节 如果查看,您可以看到
SimpleHttpOperator
的执行基本上只使用Python请求库

run
方法采用了一个
request\u kwargs
选项,您无法通过
SimpleHttpOperator
上的
execute
方法访问该选项。使用自己的
execute
方法或可调用函数编写操作符,可以明确使用
HttpHook.run(…)
来传递请求的参数,也可以选择使用另一个Python http库