簡體   English   中英

如何在 apscheduler 作業中從 class 調用 function?

[英]How to call function from class in apscheduler job?

我有一個帶有觸發器的class ,我想在工作到達適當的時間時更新這些觸發器。

我的 class:

class SetTrigger(object):
    def __init__(self):
        self.set_work = False
        self.set_reload = False
        self.set_refresh = False
    
    def UpdateSetRefresh(self):
        self.set_refresh = True
        return self.set_refresh

    def UpdateSetWork(self):
        self.set_work = True
        return self.set_work

    def UpdateSetReload(self):
        self.set_reload = True
        return self.set_reload

如果我將變量設置為從 function 獲取值,如下所示,我會收到一個錯誤。

trigger = SetTrigger()
set_refresh = trigger.UpdateSetRefresh()

錯誤:

func must be a callable or a textual reference to one

我已經嘗試調用trigger.UpdateSetRefresh但變量set_refresh不會更改為True 如果我調用trigger.UpdateSetRefresh()它會給我上面相同的錯誤。

如何在 APScheduler 作業中從 class SetTrigger調用 function UpdateSetRefresh ,如下所示?

scheduler.add_job(trigger.UpdateSetRefresh(), 'interval', seconds=20, id='1', name='refresh_hereoes_positions', misfire_grace_time=180)

或者

scheduler.add_job(set_refresh, 'interval', seconds=20, id='1', name='refresh_hereoes_positions', misfire_grace_time=180)

您必須將 function 傳遞給add_job但您傳遞的是trigger.UpdateSetRefresh的返回值而不是它。
所以正確的陳述應該是:

scheduler.add_job(trigger.UpdateSetRefresh, 'interval', seconds=2, id='1', name='refresh_hereoes_positions')

代替

scheduler.add_job(trigger.UpdateSetRefresh(), 'interval', seconds=2, id='1', name='refresh_hereoes_positions')

當您在 function 名稱 python 的末尾添加括號時,將執行它並將返回值傳遞給add_job function。
有關將 function 作為參數傳遞的更多信息,請查看此鏈接

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM