Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用airflow restapi触发dag不';不起作用,但在UI中单击会起作用_Python_Airflow - Fatal编程技术网

Python 使用airflow restapi触发dag不';不起作用,但在UI中单击会起作用

Python 使用airflow restapi触发dag不';不起作用,但在UI中单击会起作用,python,airflow,Python,Airflow,嗨,我有一个简单的DAG,它使用bash操作符和DockerOperator。我想从python脚本触发,如下所示: import requests import json from datetime import datetime from pprint import pprint headers = { 'accept':'application/json', 'content-type':'application/json', } auth = ('airflow','

嗨,我有一个简单的DAG,它使用
bash操作符
DockerOperator
。我想从python脚本触发,如下所示:

import requests
import json
from datetime import datetime
from pprint import pprint


headers = {
    'accept':'application/json',
    'content-type':'application/json',
}
auth = ('airflow','airflow')
body = {
    "conf": {},
    "dag_run_id":"testrun03",
    "execution_date":datetime.now().strftime("%y-%m-%dt%h:%m:%sz"),
}

result = requests.post(
  "http://localhost:8080/api/v1/dags/r_dag/dagruns",
    headers=headers,
    auth=auth,
  data=json.dumps(body)
)
pprint(result.content.decode('utf-8'))
它给了我这个输出:

('{\n'
 '  "conf": {},\n'
 '  "dag_id": "r_dag",\n'
 '  "dag_run_id": "testrun03",\n'
 '  "end_date": null,\n'
 '  "execution_date": "2021-05-22T23:59:34+00:00",\n'
 '  "external_trigger": true,\n'
 '  "start_date": "2021-05-23T06:59:34.746354+00:00",\n'
 '  "state": "running"\n'
 '}\n')

当我得到dag_run_id时:

{
  "conf": {},
  "dag_id": "r_dag",
  "dag_run_id": "testrun03",
  "end_date": "2021-05-23T06:59:35.543319+00:00",
  "execution_date": "2021-05-22T23:59:34+00:00",
  "external_trigger": true,
  "start_date": "2021-05-23T06:59:34.746354+00:00",
  "state": "success"
}

但是当我进入UI并检查日志时,它是空的,并且图形视图显示图形的白色轮廓。当我悬停时,它说DAG还没有运行。当我在UI中单击run时,它会按预期工作。我想以编程方式触发DAG也是一样的?我是否错过了另一个步骤?

我能够重现这个问题。在Apache Airflow上创建了一个


编辑:确保发送的请求的执行日期与实例使用的时区相同。在我的案例中,我发送的请求是UTC+2,导致执行日期为“future”的dag运行。

谢谢,我会尝试一下。我将脚本更改为
datetime.utcnow()
,但遇到了相同的行为。当我进入浏览->DAG运行时,状态被标记为成功,但当我进一步点击它时,它显示它还没有运行。请给我们看DAG好吗?嗨,我终于找到了。这确实是utc时间戳问题。当我改为
utcnow()
时,我在
strftime()
格式上犯了一个错误。我没有大写一些占位符,所以它不是预期的时间戳。现在可以了。谢谢