import os
import logging
from datetime import datetime, timedelta
import pandas as pd
import glob
import airflow
from airflow.models import DAG
from airflow.operators.dummy_operator import DummyOperator
from airflow.operators.python_operator import PythonOperator
from airflow.utils.db import provide_session
logging.basicConfig(format='%(levelname)s: %(asctime)s %(message)s', filename='updaglog.log', level=logging.debug)
##############################################################################################################################
def function_1():
fst = pd.read_excel('/folder/list.xlsx')
old_files = glob.glob1('/folder/', 'up_dag_**')
for f in old_files: os.remove(f)
now_date = datetime.now().strftime('%Y%m-%H%M%S')
upload_date = fst.T
upload_date.to_excel('/folder/up_dag_' + now_date + '_.xlsx')
return True
def function_2():
lst = pd.read_excel('/folder/list.xlsx')
old_files = glob.glob1('/folder/', 'up2_dag_**')
for f in old_files: os.remove(f)
now_date = datetime.now().strftime('%Y%m-%H%M%S')
upload_date = lst.T
upload_date.to_excel('/folder/up2_dag_' + now_date + '_.xlsx')
return True
###############################################################################################################################
times = timedelta(hours=1)
dag = DAG(
dag_id='TSnew_test_dag',
description = '',
start_date = datetime(2020, 8, 31),
schedule_interval = timedelta(hours=1)
)
with dag:
load_data_node = PythonOperator(
task_id='fst_unit',
python_callable=function_1,
provide_context=True
)
load2_data_node = PythonOperator(
task_id='lst_unit',
python_callable=function_2,
provide_context=True
)
load_data_node >> load2_data_node
aW1wb3J0IG9zCmltcG9ydCBsb2dnaW5nCmZyb20gZGF0ZXRpbWUgaW1wb3J0IGRhdGV0aW1lLCB0aW1lZGVsdGEKaW1wb3J0IHBhbmRhcyBhcyBwZAppbXBvcnQgZ2xvYgppbXBvcnQgYWlyZmxvdwpmcm9tIGFpcmZsb3cubW9kZWxzIGltcG9ydCBEQUcKZnJvbSBhaXJmbG93Lm9wZXJhdG9ycy5kdW1teV9vcGVyYXRvciBpbXBvcnQgRHVtbXlPcGVyYXRvcgpmcm9tIGFpcmZsb3cub3BlcmF0b3JzLnB5dGhvbl9vcGVyYXRvciBpbXBvcnQgUHl0aG9uT3BlcmF0b3IgIApmcm9tIGFpcmZsb3cudXRpbHMuZGIgaW1wb3J0IHByb3ZpZGVfc2Vzc2lvbgoKbG9nZ2luZy5iYXNpY0NvbmZpZyhmb3JtYXQ9JyUobGV2ZWxuYW1lKXM6ICUoYXNjdGltZSlzICUobWVzc2FnZSlzJywgZmlsZW5hbWU9J3VwZGFnbG9nLmxvZycsIGxldmVsPWxvZ2dpbmcuZGVidWcpCgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCmRlZiBmdW5jdGlvbl8xKCk6CiAgICBmc3QgPSBwZC5yZWFkX2V4Y2VsKCcvZm9sZGVyL2xpc3QueGxzeCcpCiAgICAKICAgIG9sZF9maWxlcyA9IGdsb2IuZ2xvYjEoJy9mb2xkZXIvJywgJ3VwX2RhZ18qKicpCiAgICBmb3IgZiBpbiBvbGRfZmlsZXM6IG9zLnJlbW92ZShmKQogICAgCiAgICBub3dfZGF0ZSA9IGRhdGV0aW1lLm5vdygpLnN0cmZ0aW1lKCclWSVtLSVIJU0lUycpCiAgICB1cGxvYWRfZGF0ZSA9IGZzdC5UCiAgICB1cGxvYWRfZGF0ZS50b19leGNlbCgnL2ZvbGRlci91cF9kYWdfJyArIG5vd19kYXRlICsgJ18ueGxzeCcpCgogICAgcmV0dXJuIFRydWUKICAgIApkZWYgZnVuY3Rpb25fMigpOgogICAgbHN0ID0gcGQucmVhZF9leGNlbCgnL2ZvbGRlci9saXN0Lnhsc3gnKQogICAgCiAgICBvbGRfZmlsZXMgPSBnbG9iLmdsb2IxKCcvZm9sZGVyLycsICd1cDJfZGFnXyoqJykKICAgIGZvciBmIGluIG9sZF9maWxlczogb3MucmVtb3ZlKGYpCiAgICAKICAgIG5vd19kYXRlID0gZGF0ZXRpbWUubm93KCkuc3RyZnRpbWUoJyVZJW0tJUglTSVTJykKICAgIHVwbG9hZF9kYXRlID0gbHN0LlQKICAgIHVwbG9hZF9kYXRlLnRvX2V4Y2VsKCcvZm9sZGVyL3VwMl9kYWdfJyArIG5vd19kYXRlICsgJ18ueGxzeCcpICAgICAgIAogICAgCiAgICByZXR1cm4gVHJ1ZQoKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCnRpbWVzID0gdGltZWRlbHRhKGhvdXJzPTEpCgpkYWcgPSBEQUcoCiAgICBkYWdfaWQ9J1RTbmV3X3Rlc3RfZGFnJywKICAgIGRlc2NyaXB0aW9uID0gJycsCiAgICBzdGFydF9kYXRlID0gZGF0ZXRpbWUoMjAyMCwgOCwgMzEpLAogICAgc2NoZWR1bGVfaW50ZXJ2YWwgPSB0aW1lZGVsdGEoaG91cnM9MSkKICAgICkKCndpdGggZGFnOiAgICAKICAgIGxvYWRfZGF0YV9ub2RlID0gUHl0aG9uT3BlcmF0b3IoCiAgICAgICAgdGFza19pZD0nZnN0X3VuaXQnLAogICAgICAgIHB5dGhvbl9jYWxsYWJsZT1mdW5jdGlvbl8xLAogICAgICAgIHByb3ZpZGVfY29udGV4dD1UcnVlIAogICAgKQoKICAgIGxvYWQyX2RhdGFfbm9kZSA9IFB5dGhvbk9wZXJhdG9yKAogICAgICAgIHRhc2tfaWQ9J2xzdF91bml0JywKICAgICAgICBweXRob25fY2FsbGFibGU9ZnVuY3Rpb25fMiwKICAgICAgICBwcm92aWRlX2NvbnRleHQ9VHJ1ZQogICAgKQogICAgCiAgICBsb2FkX2RhdGFfbm9kZSA+PiBsb2FkMl9kYXRhX25vZGU=