我在CentOS 7.4中使用Python 2.7.5中的Flask 1.0.2。不时(例如,20%或30%的时间)从路线功能返回值会挂起。我已经通过在日期之前放入一个日志条目来验证它是否一直到return语句(即使调用挂起,日志条目也会显示在日志中)。它发生在我的所有功能上,所以为了清晰起见,我将包含最简单的功能:
@my_app.route("/signingkey", methods=['GET'])
def signing_key():
"""
signing_key: Provides the client with the current signing key (the public portion of it) for the domain
:return: The contents of the public key
"""
try:
provision_app.logger.info("Providing signing key")
return utility.get_signing_key(True), 200, CT_TP
except Exception:
return utility.get_exception_text(), 500, CT_TP
注意:CT_TP = {'内容类型':' text / plain'}
注意:utility.get_signing_key()返回一个文本块作为str对象
我试过回烧瓶。反应物,但没有改变症状。
我在Apache 2.4.6-80中通过WSGI运行Flask应用程序。我的WSGI文件如下所示:
import sys
sys.path.insert(0, '/opt/my_app/')
# noinspection PyPep8
from provision import my_app as application
我的Apache conf.d文件如下所示:
<VirtualHost *>
WSGIDaemonProcess my_app user=my_app group=my_app threads=4 processes=8
WSGIScriptAlias / /opt/my_app/myapp.wsgi
<Directory /opt/my_app/>
WSGIProcessGroup my_app
WSGIApplicationGroup %{GLOBAL}
Require all granted
</Directory>
</VirtualHost>
服务器是一个VM(kvm),具有4个VCPU和8GB RAM。这个应用程序是服务器必须执行的唯一负载,并且很少获得超过3%的CPU利用率(当应用程序投入生产时,预计会更高,但在此测试阶段,几乎没有压力在服务器上。)
我考虑过刚刚修理服务器并重新开始,但我真的很想知道Flask的用途。
非常感谢任何帮助,想法或观察。