Я пытаюсь запустить приложение Python 3 WSGI с использованием Phusion Passenger.Используя информацию из этого вопроса , я могу заставить Пассажира использовать Python 3, но не представляется возможным, чтобы приложение Python 3 работало с Passenger в Python 2.x (т.е. кажется, что и приложение, и Пассажирдолжен работать в том же интерпретаторе Python).Поэтому я предполагаю, что мне нужно, чтобы Passenger работал в 3.x.
Я запустил 2to3 на request_handler.py Пассажира, а затем обработал оставшиеся ошибки времени выполнения.Однако, когда я запускаю приложение, я просто получаю 502 с этой ошибкой в журнале:
[error] 9839 # 0: * 4 восходящее преждевременно закрытое соединение при чтении заголовка ответа из восходящего потока, клиент:…, Сервер: _, запрос: «GET / HTTP / 1.1», восходящий поток: «passenger: unix: / passenger_helper_server:», хост: «…»
Тот же код приложения работает с Passengerв Python 2.x, так что я предполагаю, что это связано с моей миграцией 2to3 request_handler.py.Ниже приведен список моих изменений.Есть идеи?Спасибо!
27c26
< import traceback
---
> import exceptions, traceback
29c28
< from socket import SocketIO
---
> from socket import _fileobject
65c64
< except Exception as e:
---
> except Exception, e:
67c66
< sys.stderr.write(str(e.__class__) + ": " + str(e) + "\n")
---
> sys.stderr.write(str(e.__class__) + ": " + e.message + "\n")
84c83
< buf = b''
---
> buf = ''
92c91
< buf = b''
---
> buf = ''
99c98
< headers = buf.split(b"\0")
---
> headers = buf.split("\0")
117c116
< env['wsgi.input'] = SocketIO(input_stream,'r',512)
---
> env['wsgi.input'] = _fileobject(input_stream,'r',512)
155c154
< raise exc_info[0](exc_info[1]).with_traceback(exc_info[2])
---
> raise exc_info[0], exc_info[1], exc_info[2]