我用 Flask 和 gunicorn 构建了一个简单的 docker web 应用程序。一切正常,但有时在发出请求时,响应会挂起。在工人超时之前,我看不到任何日志记录。因此,似乎该工作人员正忙于某事,超时,然后新工作人员接收请求并立即响应。
我只用 1 名工人设置了它。我知道我可以添加另一个工人。但除了我的手动戳之外,没有其他要求。没有其他事情发生。所以我非常好奇这个工人或主要的 gunicorn 工人还会在容器中做什么(心跳,错误处理那么昂贵)?
我的 Dockerfile:
FROM python:3.6-slim
WORKDIR /app
COPY . .
RUN pip install -r requirements.txt --no-cache-dir
EXPOSE 5000
CMD ["gunicorn", "-w", "1", "-t", "30", "--worker-tmp-dir", "/dev/shm", "-b", "0.0.0.0:5000", "app:app"]
Run Code Online (Sandbox Code Playgroud)
我的微不足道的应用程序:
import logging
import model
from flask import Flask, request, jsonify
app = Flask(__name__)
@app.errorhandler(Exception)
def handle_error(e):
code = 500
app.log_exception(e)
return jsonify(message=str(e)), code
@app.route("/predict", methods=["POST", "GET"])
def predict():
result = model.predict(None)
return jsonify(result)
model = model.mcascorer()
if __name__ …Run Code Online (Sandbox Code Playgroud)