为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用环境变量来使用 apscheduler 设置类似 cron 的计划?

如何使用环境变量来使用 apscheduler 设置类似 cron 的计划?

慕神8447489 2023-09-26 14:13:41
我已经整理了一个用 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']))


查看完整回答
反对 回复 2023-09-26
?
汪汪一只猫

TA贡献1898条经验 获得超8个赞

设置环境变量并使用 python 读取它的示例(我假设这就是您所要求的)。

export INTERVAL=5

import os
print(os.environ.get("INTERVAL"))

但是,您可能需要记住以下几点:

  • 从一个操作系统到另一个操作系统设置环境变量会有所不同

  • 确保您为运行流程的同一用户设置变量

  • 确保在跨环境移动时配置这些变量的迁移


查看完整回答
反对 回复 2023-09-26
  • 2 回答
  • 0 关注
  • 106 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信