WSGI предава контекста на заявката си във флаш. Как да получа достъп до него?
Например, за да пиша в регистъра на грешките в уеб сървъра от приложението Flask, което не използва WSGI, пиша на stderr:
sys.stderr.write(str(msg) + "n")
За този тип изходен запис, WSGI за Python изисква да използвам контекста на заявката WSGI environ["wsgi.errors"]
Вижте документите за отстраняване на грешки в WSGI.
Как да направя това?
Отговори:
1 за отговор № 1Ако използвате mod_wsgi, можете просто да го използвате print()
, Той ще го залови и ще го изпрати на грешката в Apacheтрупи. Ако използвате достатъчно нова версия mod_wsgi и това се прави вътре в контекста на заявката, то дори ще бъде свързано с регистрирането на ниво Apache на заявката, което означава, че можете да я маркирате в дневниците на Apache, като зададете формат на лог на Apache , с Apache искане ID, ако е необходимо, така че може да го свърже с всяко Apache дърводобив за същата заявка.
Като цяло всички сървъри на WSGI ще улавят print()
извежда и го изпраща в дневниците. Единствените изключения обикновено са за WSGI над CGI / FASTCGI / SCGI. Така че използването на wsgi.errors
не е изрично необходима и всъщност е рядкост да се използва код дори.
0 за отговор № 2
Достъп до контекста на заявката за WSGI чрез request.environ
Влизане в регистъра на грешките в уеб сървъра за конфигурации WSGI и WSGI:
def log(msg):
out_stream = sys.stderr
# See http://modwsgi.readthedocs.io/en/develop/user-guides/debugging-techniques.html
if "wsgi.errors" in request.environ: out_stream = request.environ["wsgi.errors"]
out_stream.write(str(msg) + "n")