I am calling weather API using Python script but the airflow task fails with error Negsignal.SIGSEGV. The Python script to call the weather API work fine when ran outside Airflow.
DAG
from airflow import DAG
from airflow.operators.bash_operator import BashOperator
from airflow.operators.python_operator import PythonOperator
from airflow.contrib.operators.spark_submit_operator import SparkSubmitOperator
from datetime import datetime, timedelta
from scripts.weather_analysis.data_collection import query_weather_data
import pendulum
local_tz = pendulum.timezone("Asia/Calcutta")
default_args = {
'owner': 'airflow',
'depends_on_past': False,
#'start_date': airflow.utils.dates.days_ago(2), --> doesn't work
'start_date': datetime(2022, 8, 29, tzinfo=local_tz),
}
dag = DAG('weather_dag_2', default_args=default_args, schedule_interval ='0 * * * *',
)
# DAG to fetch weather data from api
t1 = PythonOperator(
task_id = 'callApi',
python_callable = query_weather_data,
dag=dag
)
Python script - query_weather_data.py
import requests
import json
from scripts.weather_analysis.config import API_KEY
from datetime import datetime
def query_weather_data():
parameters = {'q':'Brooklyn, USA', 'appId': API_KEY}
result = requests.get("http://api.openweathermap.org/data/2.5/weather?",parameters)
if result.status_code == 200:
json_data = result.json()
print(json_data)
else:
print("Unable to fetch api data")
Error Log:
[2022-09-02, 17:00:04 IST] {local_task_job.py:156} INFO - Task exited with return code Negsignal.SIGSEGV
[2022-09-02, 17:00:04 IST] {taskinstance.py:1407} INFO - Marking task as FAILED. dag_id=weather_dag_2, task_id=callApi, execution_date=20220902T103000, start_date=20220902T113004, end_date=20220902T113004
Environment details:
MacOS Monterey
Airflow=2.3.4
Airflow deployment mode=Local
Python=3.10
I already tried the solution listed here Airflow DAG fails when PythonOperator tries to call API and download data but it doesn't solve my issue.
Please help.