![](/img/trans.png)
[英]how to pick the return value from previous task of python operator in airflow
[英]Airflow task argument return from previous task
如何將函數參數設置為任務,該任務是從先前運行的任務/函數返回的。 請注意,這些任務是以編程方式定義的,因此我不能簡單地使用xcom_pull(task_id="some_task")
,因為任務是在循環中定義的(如下所示):
def scrape(site):
return requests.get(site).content
def echo(**kwargs):
ti = kwargs['ti']
# how can I use the input from `scrape()` here?
for idx, site in enumerate(sites):
myop = PythonOperator(task_id='scape_%s' % str(idx), python_callable=scrape, op_args=[site], dag=dag)
echo_op = PythonOperator(task_id='echo_%s' % str(idx), dag=dag, provide_context=True, python_callable=echo)
myop.set_downstream(echo_op)
缺少的只是傳遞所需的task_id
,以便您能夠讀取 xcom 值
def scrape(site):
return requests.get(site).content
def echo(**kwargs):
ti = kwargs['ti']
myop_task_id_value = kwargs['myop_task_id_key']
x = ti.xcom_pull(task_ids=myop_task_id_value) #pulling xcom value of scrape
print(x)
for idx, site in enumerate(sites):
myop_task_id = 'scape_%s' % str(idx)
myop = PythonOperator(task_id= myop_task_id, python_callable=scrape, op_args=[site], dag=dag)
echo_op = PythonOperator(task_id='echo_%s' % str(idx),
dag=dag,
provide_context=True,
python_callable=echo,
op_kwargs={'myop_task_id_key': myop_task_id}
)
myop.set_downstream(echo_op)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.