2017-07-30 937 views
1

我想弄清楚APScheduler是否是我項目需求的工具。如何解釋APScheduler中從get_jobs返回的作業列表?

我可以添加一份工作。

我可以得到一份工作清單 - 但我無法解釋結果。我想讓我的程序將此返回的作業列表轉換爲程序其他部分所需的格式。我需要提取觸發器參數。

假設我正在使用cron觸發器。我會做一個簡單的現在:

new_job = self.scheduler.add_job(jobfunc,'cron', minute='*/5', args=["minute"] 

後來,我想獲得工作,然後提取基本信息(這是一個cron觸發器,它是定於「分鐘」 = */5) - 基本上我想重建我創建觸發器的參數。

我看過調試器中返回的作業,我發現每個作業都有一個「觸發」成員,其中包含我需要的信息 - 但我不確定如何以編程方式訪問它。

我願做這樣的事情:

jobs=self.scheduler.get_jobs() 
    schedules=[] 
    for job in jobs: 
    schedules.append(<do something with job.trigger.fields>) 

凡元素添加到日程看起來是這樣的:

{'minute':'*/5'} 

文檔說:

要獲得一個機器可處理的計劃作業列表,您可以使用get_jobs()

問題是,我的'機器'應該如何處理這個列表?

回答

0

好的,多虧了以前在APScheduler Google小組上提出的問題,我有一個解決方案!

細節必須通過字段訪問,因爲我認爲。從單個字段獲取信息的關鍵是將字段值轉換爲字符串。

這裏是一個工作的例子:有一個作業添加

schedules = [] 
for job in self.scheduler.get_jobs(): 
    jobdict = {} 
    for f in job.trigger.fields: 
     curval = str(f) 
     jobdict[f.name] = curval 

    schedules.append(jobdict) 

對於一個時間表:

new_job = self.scheduler.add_job(jobfunc,'cron', second='*/5', args=["second"]) 

結果列表出來是這樣的:

[{'week': '*', 'hour': '*', 'day_of_week': '*', 'month': '*', 'second': '*/5', 'year': '*', 'day': '*', 'minute': '*'}] 
0

APScheduler方法.get_jobs()返回作業實例列表。

例如,您可以打印有關的東西,如下面的所有目前預定作業的信息:

for job in scheduler.get_jobs(): 
    print("name: %s, trigger: %s, next run: %s, handler: %s" % (
      job.name, job.trigger, job.next_run_time, job.func)) 

注意作業名稱可以在不同的工作重複。

你可以在這裏找到API reference for the job class。它沒有明確列出工作類成員,但它們與kwargs中的變量相匹配。

相關問題