【发布时间】:2017-11-01 17:20:06
【问题描述】:
有一个简单的python应用部署在heroku平台上:
from flask import Flask
log("APP STARTED.")
# single time connection to database and logging stuff
app = Flask(__name__)
@app.route('/', methods=['GET'])
# do something
@app.route('/', methods=['POST'])
# do something
过程文件:
web: gunicorn app:app --log-file=-
查看日志时,我发现我上面的代码使用多个线程执行了多次。我知道由于不一致的日志记录,必须涉及更多线程。查看日志:
2017-05-31T17:12:46.415059+00:00 app[web.1]: APP STARTED.
2017-05-31T17:12:46.415072+00:00 app[web.1]: Executing query.
2017-05-31T17:12:46.415688+00:00 app[web.1]: APP STARTED.
2017-05-31T17:12:46.415717+00:00 app[web.1]: Executing query.
2017-05-31T17:12:46.436370+00:00 app[web.1]: Successful connection to database.
2017-05-31T17:12:46.437398+00:00 app[web.1]: Successful connection to database.
2017-05-31T17:12:46.439197+00:00 app[web.1]: Success executing query.
2017-05-31T17:12:46.439680+00:00 app[web.1]: Success executing query.
我也可以在这里看到工作线程:
2017-05-31T18:59:10.046388+00:00 app[web.1]: [2017-05-31 18:59:10 +0000] [9] [INFO] Booting worker with pid: 9
2017-05-31T18:59:10.132547+00:00 app[web.1]: [2017-05-31 18:59:10 +0000] [11] [INFO] Booting worker with pid: 11
如何防止多个工作线程启动并仅从一个启动?
【问题讨论】:
标签: python multithreading heroku web-applications