如何在python中修复线程

时间:2016-12-11 12:43:48

标签: python multithreading

我编写了以下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。

2 个答案:

答案 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)