Airflow PythonVirtualOperator выдает ошибку на простом примере - PullRequest
1 голос
/ 06 мая 2020

Я пытаюсь создать PythonVirtualOperator, а оператор вызывает функцию только для того, чтобы распечатать сообщение.

def func(**kwargs):
    print("hello")

Я определил оператор следующим кодом:

    pv = PythonVirtualenvOperator(
        task_id="pv",
        python_callable=func,
        op_kwargs={"test": "pv"},
        python_version='3.6'
    )

При срабатывании дага я получил ошибку:

[2020-05-06 02:03:33,899] {base_task_runner.py:115} INFO - Job 31244: Subtask ge b'Traceback (most recent call last):\n  File "/tmp/venvuv3m91vw/script.py", line 3, in <module>\n    with open(sys.argv[1], "rb") as f: arg_dict = pickle.load(f)\nModuleNotFoundError: No module named \'my_python_virtual_operator_test\'\n'
[2020-05-06 02:03:34,316] {taskinstance.py:1059} ERROR - Command '['/tmp/venvuv3m91vw/bin/python', '/tmp/venvuv3m91vw/script.py', '/tmp/venvuv3m91vw/script.in', '/tmp/venvuv3m91vw/script.out', '/tmp/venvuv3m91vw/string_args.txt']' returned non-zero exit status 1.
Traceback (most recent call last)
  File "/usr/local/lib/airflow/airflow/models/taskinstance.py", line 930, in _run_raw_tas
    result = task_copy.execute(context=context
  File "/usr/local/lib/airflow/airflow/operators/python_operator.py", line 113, in execut
    return_value = self.execute_callable(
  File "/usr/local/lib/airflow/airflow/operators/python_operator.py", line 307, in execute_callabl
    string_args_filename)
  File "/usr/local/lib/airflow/airflow/operators/python_operator.py", line 319, in _execute_in_subproces
    close_fds=True
  File "/opt/python3.6/lib/python3.6/subprocess.py", line 356, in check_outpu
    **kwargs).stdou
  File "/opt/python3.6/lib/python3.6/subprocess.py", line 438, in ru
    output=stdout, stderr=stderr
subprocess.CalledProcessError: Command '['/tmp/venvuv3m91vw/bin/python', '/tmp/venvuv3m91vw/script.py', '/tmp/venvuv3m91vw/script.in', '/tmp/venvuv3m91vw/script.out', '/tmp/venvuv3m91vw/string_args.txt']' returned non-zero exit status 1

Значение my_python_virtual_operator_test это папка, в которой находится мой даг. Похоже, что процесс не может найти, где находится даг при переключении в виртуальную среду.

Подскажите, пожалуйста, как с этим справиться?

Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...