2017-12-18 24 views
1

我正在將Schedule導入Flask。我的項目包含WSGI但我對FlaskWSGI之間的關係知之甚少。現在我有三個主要文件:Python日程安排在Flask中不起作用

  • wsgi.py:自動生成其他工具。
  • app.py:我在這裏提出客戶請求。用於測試Schedule

我想在啓動服務器時啓動一項長期任務。這裏是wsgi.py部分:

# -*- coding: utf-8 -*- 
from threading import Thread 
import test 


t = Thread(target=test.job) 
t.start() 

if __name__ == '__main__': 
    ... 

正如你看到我啓動一個線程,並讓it.Here就業工作是我的test.py

import schedule 


def job(): 
    schedule.every(1).seconds.do(pr) 


def pr(): 
    print("I'm working...") 

我的問題是,job永遠不會發生。

回答

0

我發現我的問題,我從來沒有讓日程表執行任務。現在wsgi.py看起來像這樣。

# -*- coding: utf-8 -*- 
from threading import Thread 
import test 

schedule.every(1).seconds.do(test.job) 
t = Thread(target=test.run_schedule) 
t.start() 

if __name__ == '__main__': 
    ... 

而且test.py

import schedule 
import time 

start_time = time.time() 


def job(): 
    print("I'm working..." + str(time.time() - start_time)) 


def run_schedule(): 
    while True: 
     schedule.run_pending() 
     time.sleep(1) 

爲了在單獨的線程工作,我創建一個線程,該線程我循環每1ms。在循環中,schedule調用run_pending如果超時(在我的情況下爲1秒)調用job