为了账号安全,请及时绑定邮箱和手机立即绑定

在python中访问APScheduler cron触发器字段值

在python中访问APScheduler cron触发器字段值

呼啦一阵风 2021-07-24 18:00:09
与此问题类似,我想从 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


查看完整回答
反对 回复 2021-07-28
  • 1 回答
  • 0 关注
  • 258 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信