我已經整理了一個用 Python 編寫的 ETL 作業。我必須在不同的環境(LOCAL、DEV、TST、PROD)中運行它,因此我需要找到一種使用環境變量設置作業計劃的方法,以便我可以為每個環境設置不同的計劃,而無需從一個環境接觸代碼其他。今天我使用的是 apscheduler。我的代碼中有類似這樣的內容:from apscheduler.schedulers.blocking import BlockingSchedulerdef etl_job():sched = BlockingScheduler(daemon=True)sched.add_job(etl_job,'interval',minutes=7)sched.start()現在有人知道解決這個問題嗎?謝謝!
2 回答

喵喵時光機
TA貢獻1846條經驗 獲得超7個贊
這是我解決這個問題的方法:
環境變量(json格式)
schedule='{"jobsSchedule": [{"job_name": "job_1","schedule": "*/1 * * * *"},{"job_name":"job_2","schedule": "*/2 * * * *"}]}'
讀取環境變量
jobCrontabSchedule = json.loads(os.getenv('schedule'))
安排每一項工作
for job in jobCrontabSchedule['jobsSchedule']: print ("Scheduling the job: "+job['job_name']+" with the schedule: "+job['schedule']) sched.add_job(globals()[job['job_name']], CronTrigger.from_crontab(job['schedule']))

汪汪一只貓
TA貢獻1898條經驗 獲得超8個贊
設置環境變量并使用 python 讀取它的示例(我假設這就是您所要求的)。
export INTERVAL=5
import os print(os.environ.get("INTERVAL"))
但是,您可能需要記住以下幾點:
從一個操作系統到另一個操作系統設置環境變量會有所不同
確保您為運行流程的同一用戶設置變量
確保在跨環境移動時配置這些變量的遷移
添加回答
舉報
0/150
提交
取消