【问题标题】:Upload generated big file with python用python上传生成的大文件
【发布时间】:2013-05-22 18:08:51
【问题描述】:

是否有可能使用 python 上传真正的大数据?

例如要上传 100GB,我可以使用 requests 模块,例如:

with open('really_big_file') as f:
    requests.post('http://some.url/streamed', data=f)

我没有任何文件的问题。我需要生成一些随机数据并将其上传到服务器。像这样的:

while uploaded_size < required_size:
    data = ''.join(random.choice(string.ascii_uppercase + string.digits) for x in range(1000))
    requests.post('http://some.url/chunk', data)
    uploaded_size += 1000

这个代码的问题是它会上传很多小文件,而我需要上传一个大文件。 我还尝试使用函数生成数据:

def gen():
    while uploaded_size < required_size:
        data = ''.join(random.choice(string.ascii_uppercase + string.digits) for x in range(1000))
        uploaded_size += 1000
        yield data
requests.post('http://some.url/chunked', data=gen())

这个变种会抛出错误:Broken pipe

如果你能说出我的错误在哪里或我应该尝试什么模块,我将不胜感激。

UPD:已通过套接字解决

【问题讨论】:

    标签: python rest upload bigdata


    【解决方案1】:
    requests.post('http://some.url/chunked', data=''.join(gen()))
    

    gen() 返回一个迭代器。您应该对其进行迭代以获取值。

    【讨论】:

    • 谢谢,现在可以了。但这不是我需要的。此方法会在内存中生成大文件,但我需要将数据小块放入
    • @Xtrey 您想如何一次上传大量数据而不将其放入内存?
    • 我想打开连接,生成一段数据,然后在它没有达到所需大小时放入服务器。感谢您的帮助,但我解决了套接字问题。
    猜你喜欢
    • 1970-01-01
    • 2014-12-04
    • 1970-01-01
    • 2018-04-03
    • 1970-01-01
    • 2014-03-15
    • 2016-02-14
    • 2018-09-20
    • 1970-01-01
    相关资源
    最近更新 更多