使用airflow插件导入外部python函数
在使用airflow插件导入外部python函数,python,airflow,Python,Airflow,在On\u failure\u callback上,我正在调用sns方法发送工作正常的通知。 我想将sns函数声明为使用气流插件的独立函数 import boto3 from airflow import DAG from airflow.operators import BashOperator from datetime import datetime, timedelta # t1, t2, t3 and t4 are examples of tasks created using op
On\u failure\u callback
上,我正在调用sns
方法发送工作正常的通知。我想将
sns
函数声明为使用气流插件的独立函数
import boto3
from airflow import DAG
from airflow.operators import BashOperator
from datetime import datetime, timedelta
# t1, t2, t3 and t4 are examples of tasks created using operators
def sns(state):
client = boto3.client('sns',aws_access_key_id='abcd',aws_secret_access_key='abcd',region_name='us-east-1')
response = client.publish(
TargetArn='Topicarn',
Message='Test')
t3 = BashOperator(
task_id='task_3',
bash_command='fail',
on_failure_callback=sns,
dag=dag)
谢谢,Rajeev(回复评论中发布的实际问题,请将问题移至原始问题)
BaseOperator
dag
文件夹AirflowPlugin
继承,它将可以作为airflow.operators.my_operator
导入。您可以将其用作任何其他运算符以下代码适用于我: 插件代码:
import boto3
from airflow.models import BaseOperator
from airflow.plugins_manager import AirflowPlugin
from airflow.utils.decorators import apply_defaults
class snsoperator(BaseOperator):
@apply_defaults
def __init__(self, *args, **kwargs):
super(snsoperator, self).__init__(*args, **kwargs)
def __call__(self, *args, **kwargs):
print("calling execute")
client = boto3.client('sns', aws_access_key_id='abc',
aws_secret_access_key='abc', region_name='us-east-1')
response = client.publish(
TargetArn='abc',
Message='Test')
class snsplugin(AirflowPlugin):
name = "snsplugin"
operators = [snsoperator]
DAG代码:
import boto3
from airflow import DAG
from airflow.operators import BashOperator
from datetime import datetime, timedelta
from airflow.operators.snsplugin import snsoperator
t3 = BashOperator(
task_id='task_3',
bash_command='fail',
on_failure_callback=snsoperator(task_id='sns'),
dag=dag)
你看过插件的官方文档了吗这里有一个很好的例子,你可以自己试试。如果您在执行此操作时遇到特定问题,那么您可以问一个更具体的问题。我已经阅读了官方文档。查找以下问题的答案:1.我应该使用哪个基类?2.我应该如何配置插件文件夹?您应该使用这些点更新原始问题。到时候会得到答复的。现在的方式太宽泛了