问题描述
我正在使用https://github.com/overhangio/openedx-scorm-xblock和openx的杜松版本。在我尝试上传zip文件时配置了所有S3存储桶后,出现此错误
Internal Server Error: /xblock/block-v1:EDX+E101+2020_E+type@scorm+block@57eff9f97a5c41248eea66bf9e4c92f8/handler/studio_submit
Traceback (most recent call last):
File "/edx/app/edxapp/venvs/edxapp/lib/python3.5/site-packages/django/core/handlers/exception.py",line 34,in inner
response = get_response(request)
File "/edx/app/edxapp/venvs/edxapp/lib/python3.5/site-packages/django/core/handlers/base.py",line 115,in _get_response
response = self.process_exception_by_middleware(e,request)
File "/edx/app/edxapp/venvs/edxapp/lib/python3.5/site-packages/django/core/handlers/base.py",line 113,in _get_response
response = wrapped_callback(request,*callback_args,**callback_kwargs)
File "/usr/lib/python3.5/contextlib.py",line 30,in inner
return func(*args,**kwds)
File "/edx/app/edxapp/venvs/edxapp/lib/python3.5/site-packages/django/contrib/auth/decorators.py",line 21,in _wrapped_view
return view_func(request,*args,**kwargs)
File "/edx/app/edxapp/edx-platform/cms/djangoapps/contentstore/views/component.py",line 478,in component_handler
resp = handler_descriptor.handle(handler,req,suffix)
File "/edx/app/edxapp/venvs/edxapp/lib/python3.5/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 1453,in handle
return super(MetricsMixin,self).handle(block,suffix=suffix)
File "/edx/app/edxapp/venvs/edxapp/lib/python3.5/site-packages/xblock/runtime.py",line 1063,in handle
results = handler(request,suffix)
File "/edx/app/edxapp/venvs/edxapp/lib/python3.5/site-packages/openedxscorm/scormxblock.py",line 228,in studio_submit
with zipfile.ZipFile(package_file,"r") as scorm_zipfile:
File "/usr/lib/python3.5/zipfile.py",line 1026,in __init__
self._RealGetContents()
File "/usr/lib/python3.5/zipfile.py",line 1089,in _RealGetContents
endrec = _EndRecData(fp)
File "/usr/lib/python3.5/zipfile.py",line 241,in _EndRecData
fpin.seek(0,2)
ValueError: I/O operation on closed file.
实际上导致此错误的代码块是 https://github.com/overhangio/openedx-scorm-xblock/blob/master/openedxscorm/scormxblock.py#L189
with zipfile.ZipFile(package_file,"r") as scorm_zipfile:
for zipinfo in scorm_zipfile.infolist():
# Do not unzip folders,only files. In Python 3.6 we will have access to
# the is_dir() method to verify whether a ZipInfo object points to a
# directory.
# https://docs.python.org/3.6/library/zipfile.html#zipfile.ZipInfo.is_dir
if not zipinfo.filename.endswith("/"):
default_storage.save(
os.path.join(self.extract_folder_path,zipinfo.filename),scorm_zipfile.open(zipinfo.filename),)
我已经尝试了很多方法,但仍然找不到该问题的实际解决方案。我在这里做错的任何建议。
在AWS s3存储桶中,当我尝试使用此scorm xblock上传zip文件时,也会创建一些zip文件
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)