作为服务和POST大文件启动时UWSGI崩溃:ConnectionError

时间:2017-10-31 09:52:42

标签: python debian uwsgi

我正面临着uwsgi的一个莫名其妙的问题:上传大文件时会发生崩溃。情形:

上下文

对于一个简单的wsgi应用程序,这里是 /home/bastien/Projects/test_upload/wsgi.py 中的python Flask应用程序:

# -*- coding: utf-8 -*-
from flask import Flask, request
app = Flask(__name__)

@app.route('/', methods=['POST'])
def hello_world():
    f = request.files['file'].read()
    return 'Hello, World! {}'.format(len(f))

application = app

时没有崩溃

使用此配置uwsgi文件, /etc/uwsgi/apps-available/test_upload.ini

[uwsgi]
plugins = python3
chdir = /home/bastien/Projects/test_upload/tracim
home = /home/bastien/Projects/test_upload/venv3.4
module = wsgi
callable = application
enable-threads = true
env = PYTHON_EGG_CACHE=/tmp
limit-post = 0
chmod-socket = 660
vacuum = true

使用以下命令运行uwsgi:

uwsgi -i /etc/uwsgi/apps-available/test_upload.ini --http-socket :6543

使用/httpie发送文件(~262Mo):

http -h -f POST :6543 'file@/home/bastien/Téléchargements/pycharm-professional-2017.2.3.tar.gz'

HTTP请求可以重复,不会崩溃。

时崩溃:

使用此配置uwsgi文件, /etc/uwsgi/apps-available/test_upload.ini ,并带有符号链接到 / etc / uwsgi / apps-enabled

[uwsgi]
plugins = python3
chdir = /home/bastien/Projects/test_upload/tracim
home = /home/bastien/Projects/test_upload/venv3.4
module = wsgi
callable = application
http-socket = :4321
enable-threads = true
env = PYTHON_EGG_CACHE=/tmp
limit-post = 0
chmod-socket = 660
vacuum = true

注意:唯一的区别是http-socket = :4321

使用service uwsgi start运行uwsgi(在debian 8.9上)并发送文件:

http -h -f POST :4321 'file@/home/bastien/Téléchargements/pycharm-professional-2017.2.3.tar.gz'

此请求将有效一次,有时两次:

HTTP/1.1 200 OK
Cache-Control: no-cache
Content-Length: 5188
Content-Type: text/html; charset=utf-8
Pragma: no-cache

但最终崩溃:

  

http:错误:ConnectionError :('连接已中止。',BadStatusLine(“''”,))在对URL发出POST请求时:{{3}}

注意:任何wsgi应用程序都可用于重现

注意:uwsgi或应用程序没有关于此“错误”的日志生成

摘要

错误不一致,只有区别在于uwsgi用作服务:

  • Debian 8.9
  • uwsgi 2.0.7-1+deb8u1 apt installed

问题

如何产生这种差异?我在哪里可以通过service命令搜索如何启动uwsgi?

1 个答案:

答案 0 :(得分:1)

在apt版<paper-icon-button icon="star" id="myButton" on-tap="toggleFavorite">star</paper-icon-button> 中使用带有uwsgi的Debian 9时问题解决了。