如何构造一个 APScheduler 触发器 class 传递给 add_job?

How to construct an APScheduler trigger class to pass to add_job?

我正在使用 APScheduler,我需要使用以编程方式创建的触发器选项列表来添加作业。也就是说,我无法编写将触发器参数直接传递给 add_job 的代码(例如 "second"="*/5" 等)。

文档中提到您可以创建触发器实例并将其作为触发器参数传递给 add_job,而不是 "cron" 或 "interval" 等

我想尝试这样做,因为触发器构造函数似乎采用 kwargs 样式参数,我应该能够将它传递给字典。

我还没有找到如何执行此操作的示例。我试过:

from apscheduler.triggers import cron
# skipping irrelevant code

class Schedules(object):
    # skipping irrelevant code

    def add_schedule(self, new_schedule):
        # here I create trigger_args as {'second': '*/5'}, for example
        trigger = cron(trigger_args)

失败并显示:类型错误:'module' 对象不可调用
如何实例化触发器对象?

我找到了解决我的主要问题的方法,但没有弄清楚如何创建触发器实例(尽管我仍然对如何创建触发器实例感到好奇)。

我遇到的主要问题是我需要以编程方式创建触发器参数。现在对 python 中的参数传递有了更多的了解,我发现如果我对 所有 参数进行 dict,而不仅仅是触发参数,我可以传递参数方式:

job_def = {} #here 我以编程方式创建触发器参数并将它们添加到 dict

job_def["func"] = job_function
job_def["trigger"] = "cron"
job_def["args"] = [3]

new_job = self.scheduler.add_job(**job_def )