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

喵喵時(shí)光機(jī)
TA貢獻(xiàn)1846條經(jīng)驗(yàn) 獲得超7個(gè)贊
這是我解決這個(gè)問(wèn)題的方法:
環(huán)境變量(json格式)
schedule='{"jobsSchedule": [{"job_name": "job_1","schedule": "*/1 * * * *"},{"job_name":"job_2","schedule": "*/2 * * * *"}]}'
讀取環(huán)境變量
jobCrontabSchedule = json.loads(os.getenv('schedule'))
安排每一項(xiàng)工作
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貢獻(xiàn)1898條經(jīng)驗(yàn) 獲得超8個(gè)贊
設(shè)置環(huán)境變量并使用 python 讀取它的示例(我假設(shè)這就是您所要求的)。
export INTERVAL=5
import os print(os.environ.get("INTERVAL"))
但是,您可能需要記住以下幾點(diǎn):
從一個(gè)操作系統(tǒng)到另一個(gè)操作系統(tǒng)設(shè)置環(huán)境變量會(huì)有所不同
確保您為運(yùn)行流程的同一用戶設(shè)置變量
確保在跨環(huán)境移動(dòng)時(shí)配置這些變量的遷移
添加回答
舉報(bào)
0/150
提交
取消