2016-10-25 16 views
5

Re-mở câu hỏi này theo yêu cầu (error: [Errno 10053]), cung cấp các ví dụ kiểm chứng tối thiểu:Flask - socket.error: [Errno 10.053] Một kết nối thành lập đã bị hủy bỏ bởi phần mềm trong máy chủ của bạn

import time 
from flask import Flask, render_template 
app = Flask(__name__, static_folder='static', template_folder='templates') 

@app.route('/') 
def main(): 
    return render_template('test.html') 

@app.route('/test') 
def test(): 
    print "Sleeping. Hit Stop button in browser now" 
    time.sleep(10) 
    print "Woke up. You should see a stack trace from the problematic exception below." 
    return render_template('test.html') 

if __name__ == '__main__': 
    app.run() 

HTML :

<html> 
<body> 
<a href="/test">test</a> 
</body> 
</html> 

Guide: Chạy ứng dụng, điều hướng đến localhost: cổng, nhấp vào liên kết, sau đó nhấn nút Stop trong trình duyệt của bạn. Bạn sẽ thấy ngoại lệ sau khi giấc ngủ kết thúc. Ngủ là cần thiết để mô phỏng bất kỳ loại hoạt động nào xảy ra trên máy chủ. Nó có thể chỉ là một vài giây: nếu người dùng quản lý để điều hướng khỏi trang - Flask sẽ sụp đổ.

socket.error: [Errno 10053] An established connection was aborted by the software in your host machine

Tại sao máy chủ ngừng phân phối ứng dụng? Tôi có thể sử dụng máy chủ nào khác cho ứng dụng Flask của mình để tránh điều này?

+1

nếu bạn phục vụ nó thông qua một trong những cách được đề xuất (ví dụ apache hoặc nginx) này có thể sẽ không là một vấn đề ở tất cả ... –

+0

Tôi đã trả lời một vấn đề tương tự với câu trả lời giống nhau trước đây, vì vậy tôi đã sao chép câu trả lời này (câu hỏi khác là về các yêu cầu đồng thời nhưng dừng 'curl' rồi dẫn đến truy xuất đường dẫn bị hỏng). –

Trả lời

11

Đây là vấn đề với việc triển khai Python 2 của mô-đun SocketServer, nó không có trong Python 3 (nơi máy chủ tiếp tục phân phát).

của bạn có 3 lựa chọn:

  • Không sử dụng được xây dựng trong máy chủ cho hệ thống sản xuất (nó là một máy chủphát triển sau khi tất cả). Sử dụng máy chủ WSGI thích hợp như gunicorn hoặc uWSGI,
  • Bật chế độ luồng với app.run(threaded=True); thread chết nhưng một cái mới được tạo ra cho các yêu cầu trong tương lai,
  • Nâng cấp lên Python 3.
+0

Xác nhận: nâng cấp lên Python3 và sự cố không còn tồn tại nữa. Cảm ơn bạn! –

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