빈 응답을 반환하는 uWSGI


9

uWSGI를 통해 서버로 연결하려는 장고 사이트가 있습니다. 서버를 다음과 같이 시작했습니다.

uwsgi --emperor .
Ctrl+Z
bg 1

(사이트의 테스트 버전 및 프로덕션 버전을 가리키는 두 개의 .ini 파일이 있으며 각각 9001 및 9002를 제공합니다)

그런 다음 내 사이트를 얻으려고 시도합니다.

curl http://localhost:9002

그렇게하면 혈관이 충실하지만 실제 반응이 없다는 메시지가 나타납니다. uwsgi.log에는 다음이 포함됩니다.

[pid: 5071|app: 0|req: 2/2] 127.0.0.1 () {26 vars in 357 bytes} [Tue Jul 23 13:20:21 2013] GET / => generated 0 bytes in 1 msecs (HTTP/1.1 302) 2 headers in 96 bytes (1 switches on core 1)

오류가 기록되지 않습니다.

다시 부팅하기 전에 제대로 작동하므로 uwsgi.ini 파일이 양호해야합니다.

진단을 시작해야 할 아이디어가 있습니까?


비슷한 문제이지만 훨씬 더 기본적인 구성으로보고 할 수 있습니다. 헤더가 제대로 전송되지만 응답 본문이 비어 있습니다. 나는 uWSGI와 gunicorn 모두 Python 3.4에서 이것을 경험합니다.
Dakota

uwsgi 로그의 꼬리를 잡고 매우 신중하게, 장황한 성가심을 읽었지만 결국 내 문제를 추적 할 수 있었고, 나는 plugin = python3uwsgi vassal의 ini에서 스탠자를 놓쳤습니다. 또는, 제대로 실행
ThorSummoner

답변:


8

나는 약간의 문제가 있었는데, wsgi 응용 프로그램이 BYTE STRINGS 대신 UNICODE를 반환하고 있음이 밝혀졌습니다 (python3에있었습니다). WSGI는 바이트 문자열을 출력 할 것으로 예상하지만 유니 코드는 절대로 사용하지 않습니다.

에서 호출 하는 대신 응용 프로그램의 return "string"사용한다 return b"string"또는return "string".encode("utf-8")

def application(env, start_response):
    start_response('200 OK', [('Content-Type', 'text/html')])
    # One of the below can be used.
    return "string".encode("utf-8")
    return b"string"

python3 과 함께 uwsgi 를 사용하는 방법에 대한 자세한 내용은 http://uwsgi-docs.readthedocs.io/en/latest/Python.html#python-3 에서 확인할 수 있습니다 .


1
+1 도움이되었습니다. python3 virtualenv + uwsgi + nginx 스택에서 빈 응답을 얻었습니다. return ["hello world"]해야한다 return [b"hello world"]:에 더 많은 정보를 uwsgi-docs.readthedocs.io/en/latest/Python.html
AmirHossein
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.