Zuckonit
V2EX  ›  问与答

bottlepy 上传 1G 大小的文件报错: No space left on device, (存到 home 子目录)

  •  
  •   Zuckonit · May 26, 2014 · 3598 views
    This topic created in 4372 days ago, the information mentioned may be changed or developed.
    IOError: [Errno 28] No space left on device
    ~ ❯ df -h
    Filesystem Size Used Avail Use% Mounted on
    /dev/sda1 18G 9.4G 7.1G 57% /
    dev 1.5G 0 1.5G 0% /dev
    run 1.5G 28M 1.5G 2% /run
    tmpfs 1.5G 0 1.5G 0% /dev/shm
    tmpfs 1.5G 0 1.5G 0% /sys/fs/cgroup
    tmpfs 1.5G 1002M 481M 68% /tmp
    tmpfs 297M 4.0K 297M 1% /run/user/1000
    tolbkni
        1
    tolbkni  
       May 26, 2014   ❤️ 1
    bottlepy 上传文件时会先暂存到 /tmp 文件夹,上传完成后再移动到指定位置。
    很明显 /tmp 空间不够了
    Zuckonit
        2
    Zuckonit  
    OP
       May 26, 2014
    好吧, 果然是。。
    改了下tempfile.tempdir貌似ok了。
    看了下bottle相关代码:
    @DictProperty('environ', 'bottle.request.body', read_only=True)
    def _body(self):
    maxread = max(0, self.content_length)
    stream = self.environ['wsgi.input']
    body = BytesIO() if maxread < self.MEMFILE_MAX else TemporaryFile(mode='w+b')
    while maxread > 0:
    part = stream.read(min(maxread, self.MEMFILE_MAX))
    if not part: break
    body.write(part)
    maxread -= len(part)
    self.environ['wsgi.input'] = body
    body.seek(0)
    return body
    当body大于self.MEMFILE_MAX (100M)的时候, 会存到tmp目录
    Zuckonit
        3
    Zuckonit  
    OP
       May 26, 2014
    不知道怎么贴代码。。sorry
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   929 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 34ms · UTC 19:40 · PVG 03:40 · LAX 12:40 · JFK 15:40
    ♥ Do have faith in what you're doing.