我设置了gunicorn与3名工人30个工人连接并使用eventlet工人类.它是在Nginx背后设置的.在每几个请求之后,我在日志中看到了这一点.
[ERROR] gunicorn.error: WORKER TIMEOUT (pid:23475)
None
[INFO] gunicorn.error: Booting worker with pid: 23514
Run Code Online (Sandbox Code Playgroud)
为什么会这样?我怎么能弄清楚什么是错的?
谢谢
我有一个使用Python/Bottle编写的REST前端来处理文件上传,通常是大文件上传.API以这样一种方式得到:
客户端将PUT作为有效负载发送给文件.除其他外,它发送日期和授权标头.这是针对重播攻击的安全措施 - 请求使用临时密钥,使用目标网址,日期和其他一些内容进行烧录
现在问题.如果提供的日期在15分钟的给定日期时间窗口中,则服务器接受请求.如果上传需要足够长的时间,则会比允许的时间增量更长.现在,使用装饰器瓶视图方法完成请求授权处理.但是,除非上传完成,否则瓶子不会启动调度过程,因此验证会在较长的上载时失败.
我的问题是:有没有办法解释瓶子或WSGI立即处理请求并流式传输上传?由于其他原因,这对我也很有用.或任何其他解决方案?在我写这篇文章时,我想到了WSGI中间件,但我仍然喜欢外部洞察力.
我愿意切换到Flask,甚至其他Python框架,因为REST前端非常轻量级.
谢谢
我正在尝试实现一个用于上传文件的烧瓶应用程序.这个文件可能非常大.例如,几乎2G的大小.
我已完成服务器端进程功能,如下所示:
@app.route("/upload/<filename>", methods=["POST", "PUT"])
def upload_process(filename):
filename = secure_filename(filename)
fileFullPath = os.path.join(application.config['UPLOAD_FOLDER'], filename)
with open(fileFullPath, "wb") as f:
chunk_size = 4096
while True:
chunk = flask.request.stream.read(chunk_size)
if len(chunk) == 0:
return
f.write(chunk)
return jsonify({'filename': filename})
Run Code Online (Sandbox Code Playgroud)
至于浏览器方面,我应该给用户一个提交文件.一次一个文件.显示进度条以指示上载过程.但我不知道浏览器端代码.如何使用javascript代码开始上传并显示状态?