You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在APScheduler任务运行时更新其传入参数param?

如何在APScheduler任务运行中修改param参数

先保存任务实例

当初始添加任务时,务必把add_job返回的任务对象存起来,不然没法后续修改:

sched1 = BackgroundScheduler()
# 把任务实例赋值给变量job
job = sched1.add_job(run, 'interval', hours=5, args=[param])
sched1.start()

动态更新下一次任务的param

需要修改参数时,直接调用任务对象的modify方法更新args即可,下一次任务触发就会用新参数:

# 定义新的param值
new_param = "更新后的参数"
# 修改任务参数
job.modify(args=[new_param])

也可以用调度器的reschedule_job方法,通过任务ID来修改,适合没保存任务实例的情况:

sched1.reschedule_job(job.id, args=[new_param])

当前正在运行的run函数参数能不能改?

这要看param的类型:

  • 要是不可变类型(比如字符串、数字):不行。因为这类参数传进函数的是值的副本,外部修改param不会影响当前正在运行的函数。
  • 要是可变类型(比如字典、列表):可以直接修改对象内部内容,当前运行的run函数会读取到更新后的值。举个例子:
# 初始化param为字典
param = {"config": "old_setting"}
# 在任务运行过程中修改字典内容
param["config"] = "new_setting"

额外提醒

如果用了多进程模式的调度器,建议用数据库类的任务存储(比如SQLAlchemyJobStore),避免进程间的任务状态不一致,确保参数修改能同步到所有进程。

内容的提问来源于stack exchange,提问作者SergioABP

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 00:10:13