I am getting the below error for a sample dag I am trying to write.
My Airflow is of below configuration:-
pip install apache-airflow[crypto,celery,postgres,hive,jdbc,mysql,ssh,docker,hdfs,redis,slack,webhdfs,httplib2]==1.10.12 --constraint /requirements-python3.7.txt
Error:-
[2020-12-19 22:41:19,342] {dagbag.py:259} ERROR - Failed to import: /usr/local/airflow/dags/alert_dag.py
Traceback (most recent call last):
File "/usr/local/lib/python3.7/dist-packages/airflow/models/dagbag.py", line 256, in process_file
m = imp.load_source(mod_name, filepath)
File "/usr/lib/python3.7/imp.py", line 171, in load_source
module = _load(spec)
File "<frozen importlib._bootstrap>", line 696, in _load
File "<frozen importlib._bootstrap>", line 677, in _load_unlocked
File "<frozen importlib._bootstrap_external>", line 728, in exec_module
File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
File "/usr/local/airflow/dags/alert_dag.py", line 6, in <module>
from httplib2 import Http
ModuleNotFoundError: No module named 'httplib2'
Code:-
from airflow import DAG
from airflow.operators.bash_operator import BashOperator
from datetime import datetime, timedelta
from json import dumps
from httplib2 import Http
default_args = {
'start_date': datetime(2020, 12, 19,17,0,0),
'owner': 'Airflow'
}
def on_success(dict):
print('on_success_call_back function')
print(dict)
def on_failure(dict):
print('on_failure_call_back function')
# """Hangouts Chat incoming webhook quickstart."""
# url = 'https://chat.googleapis.com/v1/spaces/XXXX'
# bot_message = {'text': 'alert_dag Failed'}
# message_headers = {'Content-Type': 'application/json; charset=UTF-8'}
# http_obj = Http()
# response = http_obj.request(
# uri=url,
# method='POST',
# headers=message_headers,
# body=dumps(bot_message),
# )
#on_success_call_back=on_success
with DAG(dag_id='alert_dag', schedule_interval="*/5 * * * *", default_args=default_args, catchup=True, dagrun_timeout=timedelta(seconds=25), on_failure_callback=on_failure) as dag:
# Task 1
t1 = BashOperator(task_id='t1', bash_command="exit 0")
# Task 2
t2 = BashOperator(task_id='t2', bash_command="echo 'second task'")
t1 >> t2