我编写了以下python代码
import thread
from flask import Flask
app = Flask(__name__)
COOKIE =""
@app.route('/')
def index():
return COOKIE
def request_cookie():
global COOKIE
while 1:
%SOME CODE WHICH GET COOKIE FROM WEB SITE%
sleep 5
if __name__ == '__main__':
app.run(debug=True)
t1 = thread.start_new_thread(get_cookie(), ())
t1.start()
当我运行此代码时。 REST服务器启动但线程没有启动。
如何修复它以便REST服务器启动并并行运行新线程以从远程站点获取cookie。
答案 0 :(得分:1)
您正在执行app.run(debug=True)
启动Web服务器并等待它完成。由于在终止服务器之前它没有完成,因此不会执行下一行。
因此,要启动线程,首先启动线程,然后启动服务器。
只是改变:
if __name__ == '__main__':
t1 = thread.start_new_thread(get_cookie(), ())
t1.start()
app.run(debug=True)
答案 1 :(得分:0)
您必须在thread
之前运行app.run()
因为app.run()
运行无限循环,直到停止服务器为止。
工作示例:
from flask import Flask
import threading
import time
app = Flask(__name__)
COOKIE = 0
@app.route('/')
def index():
return str(COOKIE)
def request_cookie():
global COOKIE
while True:
COOKIE += 1
time.sleep(1)
if __name__ == '__main__':
t1 = threading.Thread(target=request_cookie)
t1.start()
app.run(debug=True)