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

2014-05-26 10:47:55 +08:00
Zuckonit  Zuckonit
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
3134 次点击
所在节点   问与答  问与答
3 条回复
tolbkni
tolbkni
2014-05-26 11:04:26 +08:00
bottlepy 上传文件时会先暂存到 /tmp 文件夹,上传完成后再移动到指定位置。
很明显 /tmp 空间不够了
Zuckonit
Zuckonit
2014-05-26 11:24:17 +08:00
好吧, 果然是。。
改了下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
Zuckonit
2014-05-26 11:24:48 +08:00
不知道怎么贴代码。。sorry

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/114267

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX