2015-10-27 19 views
15

Tôi sử dụng gunicorn --workers 3 wsgi để chạy ứng dụng Flask của mình. Nếu tôi thay đổi biến số application thành myapp, Gunicorn sẽ báo lỗi AppImportError: Failed to find application: 'wsgi'. Tại sao tôi nhận được lỗi này và cách khắc phục?Gunicorn không thể tìm thấy ứng dụng khi tên được thay đổi từ "ứng dụng"

myproject.py:

from flask import Flask 

myapp = Flask(__name__) 

@myapp.route("/") 
def hello(): 
    return 'Test!' 

if __name__ == "__main__": 
    myapp.run(host='0.0.0.0') 

wsgi.py:

from myproject import myapp 

if __name__ == "__main__": 
    myapp.run() 

Trả lời

32

Gunicorn (và hầu hết các máy chủ WSGI) mặc định là tìm kiếm các callable tên application hoặc app trong bất cứ module bạn trỏ nó tại. Chỉ cần thêm bí danh from myproject import myapp as application hoặc application = myapp sẽ cho phép Gunicorn phát hiện lại cuộc gọi.

Tuy nhiên, tệp wsgi.py hoặc bí danh là không cần thiết, Gunicorn có thể được chỉ trực tiếp tại mô-đun thực và có thể gọi được. Hầu như không bao giờ có lý do chính đáng để có một tệp riêng biệt wsgi.py.

gunicorn myproject:myapp --workers 16 
+4

Có thể có lý do, nhưng không ai trong số họ áp dụng mẫu được cung cấp trong câu hỏi. Dễ cấu hình đặc điểm kỹ thuật cho sản xuất so với dev là một. –

Các vấn đề liên quan