Azure / Azure/azure-storage-python
AzureHttpError: The request body is too large and exceeds the maximum permissible limit.
- 主要语言
- Python
- 星标
- 343
- 派生
- 243
- PR 合并指标
- 30 天内没有已合并 PR
描述
### Which service(blob, file, queue) does this issue concern?
blob
### Which version of the SDK was used? Please provide the output of `pip freeze`.
django-storages==1.4.1
azure-storage==0.20.3
### What problem was encountered?
Can not able to upload file greater than 64 MB. Following is the information:
#### Response code
```
RequestBodyTooLargeThe request body is too large and exceeds the maximum permissible limit.
RequestId:c0539b4a-701e-0029-25e3-4d6b89000000
Time:2020-06-29T07:07:41.3774372Z67108864
```
#### Line which triggers error
`default_storage.save(path, File(scorm_file))`
### Complete Stack trace
```
==> /edx/var/log/supervisor/cms-stderr.log <==
2020-06-29 03:07:43,579 ERROR 8851 [root] signals.py:21 - Uncaught exception from None
Traceback (most recent call last):
File "/edx/app/edxapp/venvs/edxapp/local/lib/python2.7/site-packages/django/core/handlers/exception.py", line 41, in inner
response = get_response(request)
File "/edx/app/edxapp/venvs/edxapp/local/lib/python2.7/site-packages/django/core/handlers/base.py", line 249, in _legacy_get_response
response = self._get_response(request)
File "/edx/app/edxapp/venvs/edxapp/local/lib/python2.7/site-packages/django/core/handlers/base.py", line 187, in _get_response
response = self.process_exception_by_middleware(e, request)
File "/edx/app/edxapp/venvs/edxapp/local/lib/python2.7/site-packages/django/core/handlers/base.py", line 185, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/edx/app/edxapp/venvs/edxapp/local/lib/python2.7/site-packages/django/utils/decorators.py", line 185, in inner
return func(*args, **kwargs)
File "/edx/app/edxapp/venvs/edxapp/local/lib/python2.7/site-packages/django/contrib/auth/decorators.py", line 23, in _wrapped_view
return view_func(request, *args, **kwargs)
File "/edx/app/edxapp/edx-platform/cms/djangoapps/contentstore/views/component.py", line 460, in component_handler
resp = handler_descriptor.handle(handler, req, suffix)
File "/edx/app/edxapp/venvs/edxapp/local/lib/python2.7/site-packages/xblock/mixins.py", line 89, in handle
return self.runtime.handle(self, handler_name, request, suffix)
File "/edx/app/edxapp/edx-platform/common/lib/xmodule/xmodule/x_module.py", line 1365, in handle
return super(MetricsMixin, self).handle(block, handler_name, request, suffix=suffix)
File "/edx/app/edxapp/venvs/edxapp/local/lib/python2.7/site-packages/xblock/runtime.py", line 1037, in handle
results = handler(request, suffix)
File "/edx/app/edxapp/venvs/edxapp/src/edx-xblock-scorm/scormxblock/scormxblock.py", line 154, in studio_submit
default_storage.save(path, File(scorm_file))
File "/edx/app/edxapp/venvs/edxapp/local/lib/python2.7/site-packages/django/core/files/storage.py", line 54, in save
return self._save(name, content)
File "/edx/app/edxapp/venvs/edxapp/local/lib/python2.7/site-packages/storages/backends/azure_storage.py", line 96, in _save
x_ms_blob_content_type=content_type)
File "/edx/app/edxapp/venvs/edxapp/local/lib/python2.7/site-packages/azure/storage/blob/blobservice.py", line 883, in put_blob
self._perform_request(request)
File "/edx/app/edxapp/venvs/edxapp/local/lib/python2.7/site-packages/azure/storage/storageclient.py", line 178, in _perform_request
_storage_error_handler(ex)
File "/edx/app/edxapp/venvs/edxapp/local/lib/python2.7/site-packages/azure/storage/_serialization.py", line 25, in _storage_error_handler
return _general_error_handler(http_error)
File "/edx/app/edxapp/venvs/edxapp/local/lib/python2.7/site-packages/azure/storage/_common_error.py", line 82, in _general_error_handler
raise AzureHttpError(message, http_error.status)
```
### Have you found a mitigation/solution?
No, still in search for a possible solution. I can not update azure-storage library, because my django-storage version depeneds on azure-storage version.
贡献指南
调研方向
首先检查 Azure SDK 的 storages/backends/azure_storage.py 中的 _save 以及 azure/storage/blob/blobservice.py 的 put_blob 路径,然后使用报告的版本,通过大于 64 MB 的 blob 重现该失败。完成的标准是确定对更大文件的受支持上传行为,并通过适当的测试覆盖该行为,或记录已确认的限制。
由索引模型根据 Issue 内容生成。
评估
- 技术栈
- azure, django, python
- 领域
- backend, cloud
- Issue 类型
- 缺陷
- 难度
- 4/5
- 预计耗时
- 3-5 天
- 活跃度
- 停滞
- 描述清晰度
- 需要澄清
- 新手友好度
- 25/100