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

如何在APScheduler中向任务函数传递*args与**kwargs?解决传参报错

解决APScheduler任务函数传递参数的错误

错误原因

你写的back_shops_tasks(company)是直接执行了函数,把返回值传给了add_job的func参数,但APScheduler要求func必须是一个可调用对象(函数本身),而不是函数执行结果,所以触发了TypeError。

正确传递参数的方法

APScheduler的add_job方法支持通过args(位置参数)和kwargs(关键字参数)来给任务函数传参,具体用法如下:

1. 传递位置参数(*args)

把要传递的参数放在一个元组里,传给args参数:

scheduler = BackgroundScheduler()
# 直接传入函数对象,用args传递位置参数
current_job = scheduler.add_job(back_shops_tasks, id='shops_back', trigger='interval', minutes=15, args=(company,))
scheduler.start()

注意:args需要是一个元组,如果只有一个参数,末尾要加逗号,避免被当成单个值而非元组。

2. 传递关键字参数(**kwargs)

如果任务函数是按关键字接收参数,比如back_shops_tasks(company=xxx),可以用kwargs参数:

scheduler = BackgroundScheduler()
current_job = scheduler.add_job(back_shops_tasks, id='shops_back', trigger='interval', minutes=15, kwargs={'company': company})
scheduler.start()

3. 混合使用位置和关键字参数

如果需要同时传两种参数,直接同时指定args和kwargs即可:

# 假设函数是back_shops_tasks(company, arg1, arg2, key1=val1)
current_job = scheduler.add_job(
    back_shops_tasks,
    id='shops_back',
    trigger='interval',
    minutes=15,
    args=(company, 'arg1_val', 'arg2_val'),
    kwargs={'key1': 'val1'}
)

内容的提问来源于stack exchange,提问作者Андрей Изотов

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 01:20:16