Как использовать декораторы для функции задачи в шаблоне dag - PullRequest
0 голосов
/ 27 июня 2019

У меня почти 20 функций, для которых я написал декоратор, вместо того, чтобы вставлять один и тот же код в каждую функцию. Поэтому мой декоратор должен проверить, возвращает ли каждая функция код состояния ответа 500, а затем вызвать исключение. Может ли кто-нибудь дать мне большеясность?

Это декоратор, который я написал

def check_tasks_failed(a_func):
    """
     Wrapper function to check whether a task_failed
    :param task_id:
    :param kwargs:
    :param kwargs:
    :param a_func:
    :return:

    """
    def wrapper(**kwargs):
        task_id_resp_status_code = a_func(**kwargs).status_code
        if task_id_resp_status_code in [500]: # Check here what are the criterion for the task to fail
           raise ValueError('invalid return status 500')
    return wrapper

Это функция, которая должна быть декоратором в качестве примера.

@check_tasks_failed
def get_naming_(**kwargs) -> requests:
    """Get job from custom_etl."""
    try:
        naming_res = get_custom_etl_job(VALIDATED_CONTAINER,
                                                 VALIDATED_CONTAINER,
                                                 VALIDATED_CONTAINER,
                                                 **kwargs)
    except Exception as e:
        return {'success':False , 'reason': f'{e}'}

Мой ожидаемый результат должен бытьВозникла исключительная ситуация, когда get_naming_ не удалось выполнить следующее исключение raise ValueError('invalid return status 500')

...