【发布时间】:2020-07-08 19:28:14
【问题描述】:
以下代码近似于真实代码。 Flask 应用程序启动时会创建一个工作线程。路由函数使用worker函数完成的数据处理。
app = Flask(__name__)
timeStr=""
def loop ():
global timeStr
while True:
time.sleep (2)
timeStr =datetime.now().replace(microsecond=0).isoformat()
print (timeStr)
ThreadID = Thread (target=loop)
ThreadID.daemon = True
ThreadID.start()
@app.route('/')
def test():
return os.name + " " + platform.platform() + " " + timeStr
application=app
if __name__ == "__main__":
app.run(host='0.0.0.0', port=8080, debug=True)
上面的应用程序在开始时运行良好,就像这样:
python3 app.py
但是在 uwsgi 中,即使我启用了线程,应用程序也无法运行。它没有更新全球 timeStr
sudo /usr/local/bin/uwsgi --wsgi-file /home/pi/pyTest/app.py --http :80 --touch-reload /home/pi/pyTest/app.py --enable-threads --stats 127.0.0.1:9191
我需要做什么才能让应用在 UWSGI 下正常运行,这样我才能以正确的方式创建 systemd 服务?
【问题讨论】:
-
您看到(或未看到)什么表明 timeStr 没有得到更新?
-
@DaveW.Smith - timeStr 始终为空,意味着它没有从初始“”值更新
标签: flask uwsgi debian-based