Я использую Flask 1.0.2 в Python 2.7.5 в CentOS 7.4.Время от времени (скажем, 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 = {'Content-Type': 'text / plain'}
ПРИМЕЧАНИЕ: utility.get_signing_key () возвращает фрагмент текста в виде объекта str
Я пытался вернуть объект flask.Response, но это не изменило симптомы.
Я запускаю приложение Flask через WSGI в Apache 2.4.6-80.Мой файл 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>
Сервер представляет собой виртуальную машину (kvm) с 4 VCPU и 8 ГББАРАН.Это приложение является единственной нагрузкой, которую должен выполнять сервер, и редко загружает ЦП выше 3% (ожидается, что оно будет выше, когда приложение будет запущено в производство, но на данном этапе тестирования практически нет нагрузки на сервер).
Я подумываю просто обнулить сервер и начать все заново, но мне бы очень хотелось узнать, что происходит с Flask.
Любая помощь, мысли или наблюдения были бы наиболееоценили.