我的Windows 10机器上安装了Airflow 1.10.11,位于WSL 2(Ubuntu-20.04)内部。
我有一个BashOperator任务,它通过/mnt/c/...或符号链接在Windows上调用.EXE。 但是该任务失败了,日志显示:
[2020-12-16 18:34:11,833] {bash_operator.py:134} INFO - Temporary script location: /tmp/airflowtmp2gz6d79p/download.legacyFilesnihvszli
[2020-12-16 18:34:11,833] {bash_operator.py:146} INFO - Running command: /mnt/c/Windows/py.exe
[2020-12-16 18:34:11,836] {bash_operator.py:153} INFO - Output:
[2020-12-16 18:34:11,840] {bash_operator.py:159} INFO - Command exited with return code 1
[2020-12-16 18:34:11,843] {taskinstance.py:1150} ERROR - Bash command failed
Traceback (most recent call last):
File "/usr/local/lib/python3.8/dist-packages/airflow/models/taskinstance.py", line 984, in _run_raw_task
result = task_copy.execute(context=context)
File "/usr/local/lib/python3.8/dist-packages/airflow/operators/bash_operator.py", line 165, in execute
raise AirflowException("Bash command failed")
airflow.exceptions.AirflowException: Bash command failed
[2020-12-16 18:34:11,844] {taskinstance.py:1187} INFO - Marking task as FAILED. dag_id=test-dag, task_id=download.files, execution_date=20201216T043701, start_date=20201216T073411, end_date=20201216T073411
就是这样了。返回代码为
1
,没有更多有用的信息。通过bash运行相同的EXE文件可以完美运行,没有错误(我也尝试了我的程序,它会向控制台发出一些信息 - 在bash中它可以正常输出,但是通过
airflow scheduler
执行时会出现同样的错误1)。更多的数据和我排除其他问题所做的事情:
airflow scheduler
以root身份运行。我还确认它在BashOperator
中运行时处于root
上下文中,因为我在其中放置了一个whoami
命令,在BashOperator中确实输出了root
(我还应该注意到,所有原生的Linux程序都可以正常运行!只有Windows程序不行。)- 我正在尝试执行的Windows EXE及其目录具有完整的“Everyone”权限(当然,我不敢在Windows文件夹上这样做 - 这只是一个例子)。
- 无论是通过/mnt/c访问还是通过符号链接访问,失败都会发生。在符号链接的情况下,符号链接具有777权限。
- 我尝试在BashOperator任务上运行
airflow test
- 它可以完美运行 - 向控制台输出并返回0(成功)。 - 尝试使用各种EXE文件 - 包括“本地”(例如随Windows安装的文件)以及我制作的C#程序。在所有情况下都有相同的行为。
- 在Airflow的GitHub存储库中没有找到任何类似的问题文档,也没有在Stack Overflow中找到任何类似的问题。
error 1
?