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

时间:2017-08-06 11:50:31

标签: python apscheduler

我正在使用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)

这失败了:TypeError:'module'对象不可调用
如何实例化触发器对象?

1 个答案:

答案 0 :(得分:0)

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

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

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 )