在 python 中访问 APScheduler cron 触发器字段值
Access APScheduler cron trigger field values in python
类似于 我想从 APScheduler 中提取 cron 作业触发器的信息。
但是,我需要 "day_of_week" 字段而不是所有字段。使用
for job in scheduler.get_jobs():
for f in job.trigger.fields:
print(f.name + " " + str(f))
我可以看到所有字段,例如week,hour,day_of_week
,但是
job.trigger.day_of_week
貌似是"CronTrigger"对象的'not an attribute'。我对这个 job.trigger
是什么类型的对象以及它的字段是如何打包的感到困惑。我尝试阅读github上的代码,但更令人费解。
如何只提取一个字段 day_of_week
,这个触发器 class 的结构如何?
深入研究后发现
apscheduler.triggers.cron.fields.DayOfWeekField
我可以通过索引 job.trigger.fields[4]
找到它,这看起来很糟糕,因为它取决于字段的“位置”。我得到的是这个 DayOfWeekField,可笑的是我也无法从中检索它的值:
a.get_value
<bound method DayOfWeekField.get_value of DayOfWeekField('day_of_week', '1,2,3,4')>
字段的结构编码为here,但我不知道如何处理dateval,get_value()
的参数。
最终,在希望理解这个概念之后,我想做
if job-day_of_week contains mon
if job-day_of_week == '*'
print ( job-day_of_week )
感谢任何suggestions/hints!
查看代码,您应该能够获得 day_of_week
字段,而无需使用 CronTrigger
class 的 FIELD_NAMES
[=23 对索引进行硬编码=],例如
dow_index = CronTrigger.FIELD_NAMES.index('day_of_week')
dow = job.trigger.fields[dow_index]
获取字段的值有点复杂,但 BaseField
似乎实现了 str 函数,该函数应该为您提供表达式的值将字段创建为一个字符串,您可以解析该字符串以找到您想要的内容:
dow_value_as_string = str(dow)
if 'mon' in dow_value_as_string:
# do something
if dow_value_as_string = "*":
# do something else
类似于
for job in scheduler.get_jobs():
for f in job.trigger.fields:
print(f.name + " " + str(f))
我可以看到所有字段,例如week,hour,day_of_week
,但是
job.trigger.day_of_week
貌似是"CronTrigger"对象的'not an attribute'。我对这个 job.trigger
是什么类型的对象以及它的字段是如何打包的感到困惑。我尝试阅读github上的代码,但更令人费解。
如何只提取一个字段 day_of_week
,这个触发器 class 的结构如何?
深入研究后发现
apscheduler.triggers.cron.fields.DayOfWeekField
我可以通过索引 job.trigger.fields[4]
找到它,这看起来很糟糕,因为它取决于字段的“位置”。我得到的是这个 DayOfWeekField,可笑的是我也无法从中检索它的值:
a.get_value
<bound method DayOfWeekField.get_value of DayOfWeekField('day_of_week', '1,2,3,4')>
字段的结构编码为here,但我不知道如何处理dateval,get_value()
的参数。
最终,在希望理解这个概念之后,我想做
if job-day_of_week contains mon
if job-day_of_week == '*'
print ( job-day_of_week )
感谢任何suggestions/hints!
查看代码,您应该能够获得 day_of_week
字段,而无需使用 CronTrigger
class 的 FIELD_NAMES
[=23 对索引进行硬编码=],例如
dow_index = CronTrigger.FIELD_NAMES.index('day_of_week')
dow = job.trigger.fields[dow_index]
获取字段的值有点复杂,但 BaseField
似乎实现了 str 函数,该函数应该为您提供表达式的值将字段创建为一个字符串,您可以解析该字符串以找到您想要的内容:
dow_value_as_string = str(dow)
if 'mon' in dow_value_as_string:
# do something
if dow_value_as_string = "*":
# do something else