I’m trying to upgrade the ExternalTaskSensor using SmartSensors, I’ve seen videos about how to do it for the FileSensor and found it helpful. I found that, since the ExternalTaskSensor uses the
execution_date to check for the other DAG, it needs to be passed to the newly created SmartSensor, otherwise I get a
KeyError for the execution date, I tried overriding the
get_poke_context method, from BaseSensorOperator, within the SmartExternalSensor to pass the execution date; but I get a
ERROR - Object of type DateTime is not JSON serializable message while Airflow tries to register the sensor as a SmartSensor while calling the
json.dumps within the sensorinstance.py file.
I also tried passing the execution date (within the overriden get_poke_context method) as a string but get an error saying
'str' object has no attribute 'isoformat' from the ExternalTaskSensor file, so I know that I must pass a datetime object for the execution_date but I get cut off by the JSON error.
I thought of adding a piece of code similar to the one in:
sensorinstance.py file for it to accept datetime objects but it didn’t seem like the right approach.
How can I approach this implementation?