Azure / Azure/azure-storage-python

AzureHttpError: The request body is too large and exceeds the maximum permissible limit.

未关闭
#672 0 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看
主要语言
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

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。