我正在構建燒瓶應用程序,並且需要一些後臺進程才能運行。我決定使用多進程,但在Flask中運行時會產生兩個進程。有誰知道爲什麼會發生?我已經在OS X和Ubuntu 12.04上測試過它,結果相同。這裏有一個例子:燒瓶應用程序中的多進程啓動2個進程
import time
import multiprocessing
from flask import Flask
app = Flask(__name__)
backProc = None
def testFun():
print('Starting')
while True:
time.sleep(3)
print('looping')
time.sleep(3)
print('3 Seconds Later')
@app.route('/')
def root():
return 'Started a background process with PID ' + str(backProc.pid) + " is running: " + str(backProc.is_alive())
@app.route('/kill')
def kill():
backProc.terminate()
return 'killed: ' + str(backProc.pid)
@app.route('/kill_all')
def kill_all():
proc = multiprocessing.active_children()
for p in proc:
p.terminate()
return 'killed all'
@app.route('/active')
def active():
proc = multiprocessing.active_children()
arr = []
for p in proc:
print(p.pid)
arr.append(p.pid)
return str(arr)
@app.route('/start')
def start():
global backProc
backProc = multiprocessing.Process(target=testFun, args=(), daemon=True)
backProc.start()
return 'started: ' + str(backProc.pid)
if __name__ == '__main__':
app.run(port=int("7879"))
我想使用python 2.7.x作爲守護進程運行Process來進行異步處理。問題是,即使守護進程設置爲True,在進程完成運行之前,端點中的返回也不會發生。我在uWSGI上運行這個,也許這就是爲什麼。 – radtek