简体   繁体   English

带有线程的烧瓶服务器给出“错误:[Errno 32]管道损坏”

[英]Flask server with threading gives “error: [Errno 32] Broken pipe”

I have enabled threaded in the Flask dev server but it seems that it doesn't fix the "Broken pipe" error described in Flask broken pipe with requests . 我已在Flask开发服务器中启用了threaded ,但似乎无法解决带有请求的Flask中断管道中描述的“中断管道”错误。

from flask import Flask, request
import requests

app = Flask(__name__)

@app.route('/compare', methods=['POST'])
def compare():
    data = request.get_json()
    img = data['img']
    imgdata = requests.get(img).content  # Error is from here
    filename = 'hello.jpg'

    with open(filename, 'wb') as f:
        f.write(imgdata)

    return 'Yes'

if __name__ == '__main__':
    app.run(threaded=True, host='0.0.0.0', port=80)
Traceback (most recent call last):
  File "/usr/lib/python2.7/SocketServer.py", line 593, in process_request_thread
    self.finish_request(request, client_address)
  File "/usr/lib/python2.7/SocketServer.py", line 334, in finish_request
    self.RequestHandlerClass(request, client_address, self)
  File "/usr/lib/python2.7/SocketServer.py", line 651, in __init__
    self.finish()
  File "/usr/lib/python2.7/SocketServer.py", line 710, in finish
    self.wfile.close()
  File "/usr/lib/python2.7/socket.py", line 279, in close
    self.flush()
  File "/usr/lib/python2.7/socket.py", line 303, in flush
    self._sock.sendall(view[write_offset:write_offset+buffer_size])
error: [Errno 32] Broken pipe

It may be because the connection is being prematurely closed or the file is too large. 可能是因为连接过早关闭或文件太大。 Try this: 尝试这个:

import requests, shutil
from requests.exceptions import ReadTimeout, ConnectionError

img_url = data['img']
filename = 'hello.jpg'

try:
    response = requests.get(img_url, stream=True)

    with open(filename, 'wb') as img_file:
        shutil.copyfileobj(response.raw, img_file)

except ReadTimeout:
    print("Connection timeout")
except ConnectionError:
    print("Connection refused")

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM