Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/300.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何解释从APScheduler中的get_作业返回的作业列表?_Python_Apscheduler - Fatal编程技术网

Python 如何解释从APScheduler中的get_作业返回的作业列表?

Python 如何解释从APScheduler中的get_作业返回的作业列表?,python,apscheduler,Python,Apscheduler,我正在试图弄清楚ApsScheduler是否是满足项目需求的工具 我可以增加一份工作 我可以得到一份工作清单,但我在解释结果时遇到了困难。我想让我的程序将返回的工作列表转换为程序其他部分所需的格式。我需要提取触发器参数 假设我使用的是cron触发器。现在我来做一个简单的例子: new_job = self.scheduler.add_job(jobfunc,'cron', minute='*/5', args=["minute"] 稍后,我想获取作业,然后提取基本信息(这是

我正在试图弄清楚ApsScheduler是否是满足项目需求的工具

我可以增加一份工作

我可以得到一份工作清单,但我在解释结果时遇到了困难。我想让我的程序将返回的工作列表转换为程序其他部分所需的格式。我需要提取触发器参数

假设我使用的是cron触发器。现在我来做一个简单的例子:

new_job = self.scheduler.add_job(jobfunc,'cron', minute='*/5', args=["minute"]
稍后,我想获取作业,然后提取基本信息(这是一个cron触发器,它被安排为'minute'=*/5)——基本上我想重建创建触发器时使用的参数

我查看了调试器中返回的作业,发现每个作业都有一个“触发器”成员,其中包含我需要的信息——但我不确定如何以编程方式访问它

我想这样做:

    jobs=self.scheduler.get_jobs()
    schedules=[]
    for job in jobs:
        schedules.append(<do something with job.trigger.fields>)
[{'week': '*', 'hour': '*', 'day_of_week': '*', 'month': '*', 'second': '*/5', 'year': '*', 'day': '*', 'minute': '*'}]
文件说:

要获取计划作业的机器可处理列表,可以使用get_jobs()


问题是,我的“机器”应该如何处理此列表?

好的,多亏了之前在APScheduler Google group上提出的一个问题,我有了一个解决方案

正如我所想,细节必须通过字段访问。从单个字段获取信息的关键是将字段值转换为字符串

下面是一个有效的示例:

 schedules = []
 for job in self.scheduler.get_jobs():
     jobdict = {}
     for f in job.trigger.fields:
         curval = str(f)
         jobdict[f.name] = curval

     schedules.append(jobdict)
对于添加了一个作业的计划:

new_job = self.scheduler.add_job(jobfunc,'cron', second='*/5', args=["second"])
结果列表如下所示:

    jobs=self.scheduler.get_jobs()
    schedules=[]
    for job in jobs:
        schedules.append(<do something with job.trigger.fields>)
[{'week': '*', 'hour': '*', 'day_of_week': '*', 'month': '*', 'second': '*/5', 'year': '*', 'day': '*', 'minute': '*'}]

APScheduler
.get_jobs()
方法返回作业实例列表

例如,您可以打印有关所有当前计划作业的信息,如下所示:

for job in scheduler.get_jobs():
    print("name: %s, trigger: %s, next run: %s, handler: %s" % (
          job.name, job.trigger, job.next_run_time, job.func))
请注意,作业名称可以在不同的作业中重复


你可以在这里找到。它没有显式列出作业类成员,但它们与kwargs中的变量相匹配。

以上仅适用于cron触发器,间隔触发器没有字段属性