使用python上传生成的大文件

时间:2013-05-27 21:24:36

标签: python rest upload bigdata

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

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

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())

此变体将抛出错误:管道损坏

如果你能说出我的错误或我应该尝试的模块,我将非常感激。

UPD:已解决使用套接字

1 个答案:

答案 0 :(得分:0)

requests.post('http://some.url/chunked', data=''.join(gen()))

gen()返回一个迭代器。你应该迭代它以获得值。