python - IO错误 : No space left on device - which device?

标签 python flask werkzeug

我正在将一个小文件 (8.5 Mb) 上传到 flask 测试服务器。

当文件上传完成后,服务器报告:

    File "/home/ubuntu/.virtualenvs/eco_app/lib/python2.7/site-packages/wtforms/form.py", 
        line 212, in __call__
    return type.__call__(cls, *args, **kwargs)
    File "/home/ubuntu/.virtualenvs/eco_app/lib/python2.7/site-packages/flask_wtf/form.py", line 49, in __init__
        formdata = request.form
    File "/home/ubuntu/.virtualenvs/eco_app/lib/python2.7/site-packages/werkzeug/local.py", 
        line 338, in __getattr__
    return getattr(self._get_current_object(), name)
    File "/home/ubuntu/.virtualenvs/eco_app/lib/python2.7/site-packages/werkzeug/utils.py", 
         line 71, in __get__
    value = self.func(obj)
    File "/home/ubuntu/.virtualenvs/eco_app/lib/python2.7/site-packages/werkzeug/wrappers.py", 
         line 484, in form
    self._load_form_data()
    File "/home/ubuntu/.virtualenvs/eco_app/lib/python2.7/site-packages/flask/wrappers.py", 
        line 165, in _load_form_data
    RequestBase._load_form_data(self)
    File "/home/ubuntu/.virtualenvs/eco_app/lib/python2.7/site-packages/werkzeug/wrappers.py", 
        line 356, in _load_form_data
    mimetype, content_length, options)
    File "/home/ubuntu/.virtualenvs/eco_app/lib/python2.7/site-packages/werkzeug/formparser.py", 
        line 193, in parse
    content_length, options)
    File "/home/ubuntu/.virtualenvs/eco_app/lib/python2.7/site-packages/werkzeug/formparser.py",
        line 99, in wrapper
    return f(self, stream, *args, **kwargs)
    File "/home/ubuntu/.virtualenvs/eco_app/lib/python2.7/site-packages/werkzeug/formparser.py",
        line 210, in _parse_multipart
    form, files = parser.parse(stream, boundary, content_length)
    File "/home/ubuntu/.virtualenvs/eco_app/lib/python2.7/site-packages/werkzeug/formparser.py", 
        line 520, in parse
    return self.cls(form), self.cls(files)
    File "/home/ubuntu/.virtualenvs/eco_app/lib/python2.7/site-packages/werkzeug/datastructures.py", 
        line 373, in __init__
    for key, value in mapping or ():
    File "/home/ubuntu/.virtualenvs/eco_app/lib/python2.7/site-packages/werkzeug/formparser.py", 
        line 518, in <genexpr>
    form = (p[1] for p in formstream if p[0] == 'form')
    File "/home/ubuntu/.virtualenvs/eco_app/lib/python2.7/site-packages/werkzeug/formparser.py", 
        line 494, in parse_parts
        _write(ell)
IOError: [Errno 28] No space left on device

现在,服务器有足够的可用空间 - 超过 3Gb。

我看过 Werkzeug github repo试图找到 Werkzeug 试图写入的位置,但无法找到它。

我还检查了 tempfile.gettempdir()这将/var/tmp 作为临时文件目录,但这个文件夹实际上是空的,所以我认为这不是造成问题的位置。

如何找到没有空间的设备?

最佳答案

@Tom Hunt 的评论是正确的。

这个 unix SE 答案解释了 what happened .

As a protection against low disc space, some daemons automatically "shadows" the current /tmp/ dir with a ram disc if the the root partition runs out of disc space. Sadly there's no automatic reversion of that process once enough disc space is free again.

我卸载了/tmp 目录并遵循了 Nitesh 的建议:

sudo umount /tmp
sudo echo 'MINTMPKB=0' > sudo /etc/default/mountoverflowtmp

现在上传工作正常。

关于python - IO错误 : No space left on device - which device?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28590344/

相关文章:

python - 如何使用 python 而不是 Docx 读取 doc 文件

python - django rest framework - 总是插入,从不更新

python - 每个 Flask session 存储大数据或服务连接

python - 使用 Flask-Oauthlib 向 Facebook 进行身份验证时出现 "Invalid Response from Facebook"

python - Flask 和 WerkZeug 中的应用程序上下文和请求上下文是什么?

python - 类型错误 : EnvironHeaders([•••]) is not JSON serializable

python - Tensorflow 1.8 GPU版本似乎在windows上不使用GPU

python - 在 Python 3 中迭代字典 items()、values()、keys()

javascript - Python flask : send variable data to textarea on the same html page w/JQuery