空の応答を返すuWSGI


9

uWSGIを介してサーバーに接続しようとしているDjangoサイトがあります。私はそのようにサーバーを起動しました:

uwsgi --emperor .
Ctrl+Z
bg 1

(それぞれ9001と9002で機能する、サイトのテストバージョンと本番バージョンを指す2つの.iniファイルがあります)

次に、自分のサイトを取得しようとします。

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で体験しています。
ダコタ

uwsgiログを尾行して非常に注意深く読んでください、それは冗長な煩わしさですが、最終的に問題を追跡することができました。plugin = python3私のuwsgi家臣のiniからスタンザが欠落していたため、python3 djangoプロジェクトが実際にロードされていませんでしたまたは正しく実行する
ThorSummoner '10 / 10/3

回答:


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"

あなたは確認することができhttp://uwsgi-docs.readthedocs.io/en/latest/Python.html#python-3を使用する方法の詳細informaitonのためにuwsgiをのpython3


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.