与此问题类似,我想从 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”对象的“不是属性”。我很困惑这job.trigger是什么类型的对象以及它的字段是如何打包的。我试着阅读了github上的代码,但更令人费解。如何只提取一个字段day_of_week,这个触发器类的结构如何?潜得更深我发现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')>字段的结构在此处编码,但我不知道如何处理 .dateval 的参数get_value()。最终,在希望理解这个概念之后,我想做if job-day_of_week contains monif job-day_of_week == '*'print ( job-day_of_week )我很感激任何建议/提示!
1 回答
四季花海
TA贡献1811条经验 获得超5个赞
查看代码,您应该能够day_of_week通过使用CronTrigger类的FIELD_NAMES属性来获取字段,而无需对索引进行硬编码,例如
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
添加回答
举报
0/150
提交
取消