如何解决Flask App与Gunicorn在生产中出现错误:套接字挂断
我有一个Flask应用程序,在Paperspace服务器上使用Gunicorn作为Docker容器运行-
Dockerfile
FROM ubuntu:18.04
FROM python:3
RUN apt-get update -y && apt-get install -y python-pip python-dev
COPY . /backend
WORKDIR /backend
RUN pip3 install -r requirements.txt
EXPOSE 8000
CMD gunicorn --timeout 10000 --workers 4 --log-level debug --bind 0.0.0.0:8000 wsgi:app
app.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from flask import Flask,request
UPLOAD_FOLDER = '/uploads'
app = Flask(__name__)
app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER
@app.route('/upload_file',methods=['GET','POST'])
def upload_file():
return "it works fine"
wsgi.py
from api import app
if __name__ == '__main__':
app.run()
我使用
运行它sudo docker run -it -p 8000:8000 myFlaskApp:1.28
从Postman触发API(/ upload_file)时,我得到了
Error: socket hang up
但是,此API在本地主机(http://0.0.0.0:8000)上正常工作
解决方法
尝试在终端(没有docker)中首先自行运行gunicorn服务器
gunicorn -w xx -t xx -b 0.0.0.0:8080 wsgi:app
如果gunicorn运行正常,则dockerfile出现问题。我认为您应该将ENTRYPOINT设置为gunicorn,然后在CMD中指定参数。
ENTRYPOINT ["gunicorn"]
CMD ["-w","4","-t","10000","-b","0.0.0.0:8080","wsgi:app"]
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。