[英]Python, AttributeError: 'PlayerPaddle' object has no attribute 'update'
[英]Python/Airflow AttributeError: 'AwsLambdaHook' object has no attribute 'update_relative'
由於此代碼片段位於 elif 循環中,因此我嘗試以多種方式對其進行分解,但這一切似乎都歸結為 AwsLambdaHook 給我帶來了麻煩。 也就是說,即使將所有內容硬編碼為僅 lambda 掛鈎並刪除其他“elif”部分也無濟於事。 這是我在 Airflow 中收到的錯誤:
Broken DAG: [/x/y/z/dag.py] Traceback (most recent call last):
File "/usr/local/lib/python3.7/site-packages/airflow/models/baseoperator.py", line 1267, in set_downstream
self._set_relatives(task_or_task_list, upstream=False)
File "/usr/local/lib/python3.7/site-packages/airflow/models/baseoperator.py", line 1211, in _set_relatives
task_object.update_relative(self, not upstream)
AttributeError: 'AwsLambdaHook' object has no attribute 'update_relative'
使用以下代碼從配置中檢索作業,j 是在 for 循環中使用的 lambda 函數/膠水作業:
from airflow.providers.amazon.aws.hooks.lambda_function import AwsLambdaHook
[...]
input_job_name = list(jobs[j].keys())[0]
[...]
lambda_step = AwsLambdaHook(function_name = input_job_name,
region_name='us-east-1', log_type='None', qualifier='$LATEST',
invocation_type='RequestResponse', config=None, aws_conn_id='aws_default')
start >> lambda_step >> end
我的代碼中沒有任何地方引用相對上游/下游序列或類似的東西。 我不確定我是否需要,如果需要,在哪里?
您正在使用鈎子而不是運算符來為您的 DAG 聲明 lambda_step 。
有允許調用 AWS lambda 函數的AwsLambdaInvokeFunctionOperator
。 我強烈建議采用這種方法。
您可以將 lambda 步驟編寫為:
from airflow.providers.amazon.aws.operators.aws_lambda import AwsLambdaInvokeFunctionOperator
lambda_step = AwsLambdaInvokeFunctionOperator(
function_name=input_job_name,
qualifier='$LATEST',
invocation_type='RequestResponse',
)
另一種方法是在AwsLambdaHook
的回調中應用PythonOperator
。
from airflow.operators.python import PythonOperator
#...
def invoke_lambda_function(**kwargs):
hook = AwsLambdaHook(aws_conn_id=kwargs.pop('aws_conn_id'))
result = hook.invoke_lambda(**kwargs)
return result
lambda_step = PythonOperator(
python_callable=invoke_lambda_function,
op_kwargs=dict(
function_name=input_job_name,
region_name='us-east-1',
log_type=None,
qualifier='$LATEST',
invocation_type='RequestResponse',
config=None,
aws_conn_id='aws_default'
)
)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.