【发布时间】:2020-06-30 10:53:18
【问题描述】:
我有一个 Django 项目,其中应用了 FileField 来存储视频文件 (mp4)。
视频文件实际上存储在 AmazonS3 上。
然后视频文件显示在相应的 HTML 上,虽然 Django DetailView 带有 HTML5 视频标签。
<video width='50%' controls>
<source src="{{ object.video_sample.url }}" type="video/mp4">
Your browser does not support the video tag.
</video>
视频在本地(本地 ip)和部署的服务器上都能很好地播放。
但是,我在终端/日志上不断收到这个烦人的错误消息:
处理来自 (...) 的请求时发生异常
回溯(最近一次通话最后一次):
文件“/usr/local/Cellar/python/3.7.6_1/Frameworks/Python.framework/Versions/3.7/lib/python3.7/socketserver.py”,第 650 行,在 process_request_thread self.finish_request(request, client_address)
文件“/usr/local/Cellar/python/3.7.6_1/Frameworks/Python.framework/Versions/3.7/lib/python3.7/socketserver.py”,第 360 行,在 finish_request self.RequestHandlerClass(request, client_address, self)
init 中的文件“/usr/local/Cellar/python/3.7.6_1/Frameworks/Python.framework/Versions/3.7/lib/python3.7/socketserver.py”,第 720 行 self.handle()
文件“.../env/lib/python3.7/site-packages/django/core/servers/basehttp.py”,第 171 行,在句柄中 self.handle_one_request()
文件“.../env/lib/python3.7/site-packages/django/core/servers/basehttp.py”,第 179 行,在 handle_one_request self.raw_requestline = self.rfile.readline(65537)
文件“/usr/local/Cellar/python/3.7.6_1/Frameworks/Python.framework/Versions/3.7/lib/python3.7/socket.py”,第 589 行,读入 return self._sock.recv_into(b)
ConnectionResetError: [Errno 54] Connection reset by peer*
我认为这与用户在视频仍处于打开状态时离开 HTML 页面这一事实有关。
你知道如何解决吗?
BR,
沙哈尔
【问题讨论】:
-
这个错误信息是本地的,对吧,在开发模式下?如果视频是从 S3 提供的,那么您将不会收到此错误,因为 S3 会看到连接中断,而不是您的 Django 实例。
-
是的,正确的。你知道如何克服它吗?
-
没有理由克服它,这很正常。在开发中,您的视频由 Django (runserver) 提供,但 Django 并不是真正为提供静态文件而设计的,尤其是不是长视频流。在生产中,您的视频将由 S3(或 CDN,如果您将其添加到混合中)提供,您不会看到此问题。
-
太好了,明白了,非常感谢!
标签: html django video connection filefield