與此問題類似,我想從 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
提交
取消