Я использую платформу Pyramid на общем сервере, на котором mod_wsgi
не поддерживается.Развернув проект, я начал получать 500 ошибок без действительно полезных сообщений об ошибках:
[Thu Sep 22 21:40:52 2011] [warn] [client IP] (104)Connection reset by peer: mod_fcgid: error reading data from FastCGI server
[Thu Sep 22 21:40:52 2011] [error] [client IP] Premature end of script headers: dispatch.fcgi
[Thu Sep 22 21:40:53 2011] [warn] [client IP] (104)Connection reset by peer: mod_fcgid: error reading data from FastCGI server
[Thu Sep 22 21:40:53 2011] [error] [client IP] Premature end of script headers: dispatch.fcgi
Я не был слишком уверен, что происходит, и в (частичной) аварии я скопировал поверх моего приложения.ini
файл с другим, который использовал соединение sqlite, а не соединение postgres.Внезапно мое приложение заработало.Тем не менее, я заметил, что казалось, что ответ внезапно обрезается (конец ответа не передается клиенту).
Я бился головой о клавиатуру, пытаясь понятьЯ надеюсь, что кто-то другой столкнулся с подобными симптомами и нашел решение.
Моя запись в fcgi выглядит следующим образом (на случай, если она вообще помогает):
app = "/dir"
inifile = "production.ini"
import sys, os
sys.path.insert(0, app)
from paste.deploy import loadapp
wsgi_app = loadapp("config:%s/%s" % (app, inifile))
if __name__ == "__main__":
from flup.server.fcgi import WSGIServer
WSGIServer(wsgi_app).run()
Я помню, как однажды натолкнулся на сообщение, в котором предлагалось запустить сервер WSGI в отдельном потоке, на какое-то время спящий основной поток, но мне это показалось ужасным хаком.