使用request_toolbelt的MultipartEncoder,我可以将文件上传到我的Pyramid服务器,但只能达到一定的大小。一旦文件超出一定大小(不确定确切的大小),请求就会抛出ConnectionError。我的金字塔服务器绝对没有显示任何获得请求的迹象。回调监视器显示2或3个块读取但随后中止。为什么??这是我的代码:
### client-side
# callback
def cb(monitor):
print monitor.bytes_read
file = open('my_big_file.mpg', 'rb')
payload = MultipartEncoder({'uploadedFile': (file.name, file, 'application/octet-stream')})
monitor = MultipartEncoderMonitor(payload, cb)
r = requests.post(url, data=monitor, headers={'Content-Type': payload.content_type})
#### server-side
@view_config(route_name='remote.agent_upload', renderer='json')
def remote_agent_upload(request):
r = request.response
uploadedFile = request.POST['uploadedFile']
fs = uploadedFile.file
filename = uploadedFile.filename
f = open('path_to_storage' + filename, 'wb')
f.write(fs.read())
fs.close()
f.close()
return r
### output and traceback
8192
16384
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "c:\Python27\lib\site-packages\requests\api.py", line 109, in post
return request('post', url, data=data, json=json, **kwargs)
File "c:\Python27\lib\site-packages\requests\api.py", line 50, in request
response = session.request(method=method, url=url, **kwargs)
File "c:\Python27\lib\site-packages\requests\sessions.py", line 465, in request
resp = self.send(prep, **send_kwargs)
File "c:\Python27\lib\site-packages\requests\sessions.py", line 573, in send
r = adapter.send(request, **kwargs)
File "c:\Python27\lib\site-packages\requests\adapters.py", line 415, in send
raise ConnectionError(err, request=request)
requests.exceptions.ConnectionError: ('Connection aborted.', error(10053, 'An established connection was aborted by the software in your host machine'))