def get_task_logs(dag_id, task_id, pendulum_execution_date, session): if not dag_id or not task_id or not pendulum_execution_date: return None dagbag = models.DagBag( os.devnull, # to initialize an empty dag bag store_serialized_dags=STORE_SERIALIZED_DAGS, ) dag = dagbag.get_dag(dag_id) ti = ( session.query(models.TaskInstance) .filter( models.TaskInstance.dag_id == dag_id, models.TaskInstance.task_id == task_id, models.TaskInstance.execution_date == pendulum_execution_date, ) .first() ) ti.task = dag.get_task(ti.task_id) file_task_handler = FileTaskHandler( base_log_folder=conf.get("core", "BASE_LOG_FOLDER"), filename_template=conf.get("core", "LOG_FILENAME_TEMPLATE"), ) logs, metadatas = file_task_handler.read(ti, None, None) return logs, metadatas
def test_python_formatting(self): expected_filename = 'dag_for_testing_filename_rendering/task_for_testing_filename_rendering/%s/42.log' % DEFAULT_DATE.isoformat( ) fth = FileTaskHandler( '', '{dag_id}/{task_id}/{execution_date}/{try_number}.log') rendered_filename = fth._render_filename(self.ti, 42) self.assertEqual(expected_filename, rendered_filename)
def test_jinja_rendering(self): expected_filename = \ 'dag_for_testing_filename_rendering/task_for_testing_filename_rendering/%s/42.log' \ % DEFAULT_DATE.isoformat() fth = FileTaskHandler('', '{{ ti.dag_id }}/{{ ti.task_id }}/{{ ts }}/{{ try_number }}.log') rendered_filename = fth._render_filename(self.ti, 42) self.assertEqual(expected_filename, rendered_filename)