uWSGI trả lại phản hồi trống


9

Tôi có một trang Django mà tôi đang cố gắng phục vụ thông qua uWSGI. Tôi đã khởi động máy chủ như vậy:

uwsgi --emperor .
Ctrl+Z
bg 1

(Có hai tệp .ini trỏ đến phiên bản thử nghiệm và phiên bản sản xuất của trang web, phục vụ lần lượt theo tiêu chuẩn 9001 và 9002)

Sau đó tôi cố gắng để có được trang web của mình:

curl http://localhost:9002

Khi tôi làm điều đó, tôi nhận được một tin nhắn nói rằng vassel là trung thành nhưng không có phản hồi thực tế. Các uwsgi.log sau đó chứa các mục sau:

[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)

Không có lỗi được ghi lại.

Tôi nên nói rằng, điều này hoạt động tốt trước khi khởi động lại để các tệp uwsgi.ini sẽ ổn.

Bất kỳ ý tưởng nơi tôi nên bắt đầu chẩn đoán này?


Tôi có thể báo cáo một vấn đề tương tự nhưng với một cấu hình thậm chí còn cơ bản hơn. Tiêu đề được gửi đúng, nhưng cơ thể phản hồi chỉ đơn giản là trống rỗng. Tôi trải nghiệm điều này với Python 3,4 cả uWSGI và gunicorn.
Dakota

theo dõi nhật ký uwsgi và đọc nó rất cẩn thận, đó là một sự phiền toái dài dòng nhưng cuối cùng tôi đã có thể theo dõi vấn đề của mình, tôi đã thiếu plugin = python3đoạn thơ từ inw uwsgi vassal của tôi, điều đó có nghĩa là dự án django python3 của tôi đã thực sự được tải hoặc chạy chính xác,
ThorSummoner

Câu trả lời:


8

Tôi đã có một số vấn đề, hóa ra ứng dụng wsgi của tôi đã trả lại UNICODE thay vì BYTE STRINGS (tôi đã sử dụng python3); và không có gì hiển thị trong các bản ghi về nó ... WSGI mong đợi các chuỗi byte ở đầu ra, không bao giờ unicode.

Trong ứng dụng có thể gọi của ứng dụng của bạn thay vì return "string"bạn nên sử dụng return b"string"hoặcreturn "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"

Bạn có thể kiểm tra http://uwsgi-docs.readthedocs.io/en/latest/Python.html#python-3 để biết thêm thông tin về việc sử dụng uwsgi với python3 .


1
+1 Điều này đã giúp tôi. Tôi đã nhận được phản hồi trống từ python3 virtualenv + uwsgi + nginx stack. return ["hello world"]nên có return [b"hello world"]thêm thông tin về: uwsgi-docs.readthedocs.io/en/latest/Python.html
AmirHossein
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.