облачный композитор pythonoperator для вызова функции электронной почты не удается с отсутствующим позиционным аргументом - PullRequest
0 голосов
/ 19 сентября 2019

У меня есть оператор python для вызова функции отправки электронной почты, но я получаю сообщение об ошибке

отсутствует 1 обязательный позиционный аргумент: contextDict

def send_email(contextDict, **kwargs):
        """Send custom email alerts."""

        # email title.
        title = "THIS IS A TEST"+file_name+" Failed"

        # email contents
        body = """
        Hi Everyone, <br>
        <br>
        This is a test pls ignore .<br>
        <br>
        """
        send_email('email@domain.com', title, body)

и я звоню по этому номеру:

PythonOperator(task_id='fail_task',
                         python_callable=notify_email,
                         provide_context = True,
                         dag=dag)

Я просто пытаюсь отправить электронное письмо на основе условия в восходящем направлении (я не ищу почту при сбое задачи) с помощью ветвления

Я считаю, что должен передать op_args в функцию, но я не уверен, что передать в контекстный словарь, так как он уже содержит всю необходимую информацию о макросах, тегах и задачах.

Примечание : я могу заставить работать электронную почту, если я не передам contextdictionary, но я хочу получить dag, задачу и другую информацию и добавить дополнительную логику, для которой мне нужен контекстный словарь, любой совет.1020 *

1 Ответ

0 голосов
/ 19 сентября 2019

Таким образом, в вашем pythonOperator отсутствует op_kwargs со значением ключа, связанным с требуемым позиционным аргументом, он должен иметь что-то вроде ниже,

PythonOperator(task_id='fail_task',
                         python_callable=notify_email,
                         provide_context = True,
                         op_kwargs={'contextDict': "value"}
                         dag=dag)

Примечание: измените "значение" на соответствующее.

Если contextDict не является обязательным, удалите его из функции и запустите так, как вы делали это раньше.

...