arc*_*ryx 5 python sockets django
调试时遇到了一些麻烦。我总是在第一次启动我的应用程序时收到此错误,然后在以后间歇性地启动。有人可以通过一些调试技术来帮助我吗?我尝试使用代理检查器-无济于事,我看不到任何有用的东西。我尝试了有关在Django设置中设置SITE_URL的建议。我尝试过使用和不使用http://以及使用和不使用端口...这是无用的错误:
Exception happened during processing of request from ('127.0.0.1', 57917)
Traceback (most recent call last):
File "/usr/local/Cellar/python/3.7.4/Frameworks/Python.framework/Versions/3.7/lib/python3.7/socketserver.py", line 650, in process_request_thread
self.finish_request(request, client_address)
File "/usr/local/Cellar/python/3.7.4/Frameworks/Python.framework/Versions/3.7/lib/python3.7/socketserver.py", line 360, in finish_request
self.RequestHandlerClass(request, client_address, self)
File "/usr/local/Cellar/python/3.7.4/Frameworks/Python.framework/Versions/3.7/lib/python3.7/socketserver.py", line 720, in __init__
self.handle()
File "/Users/ryan/.local/share/virtualenvs/portal-2PUjdB8V/lib/python3.7/site-packages/django/core/servers/basehttp.py", line 171, in handle
self.handle_one_request()
File "/Users/ryan/.local/share/virtualenvs/portal-2PUjdB8V/lib/python3.7/site-packages/django/core/servers/basehttp.py", line 179, in handle_one_request
self.raw_requestline = self.rfile.readline(65537)
File "/usr/local/Cellar/python/3.7.4/Frameworks/Python.framework/Versions/3.7/lib/python3.7/socket.py", line 589, in readinto
return self._sock.recv_into(b)
ConnectionResetError: [Errno 54] Connection reset by peer
Run Code Online (Sandbox Code Playgroud)
即使重置此连接,该应用程序似乎也能正常运行,但它一直让我疯狂地尝试调试。
arc*_*ryx 27
FFS……太蠢了。我注意到它总是在找不到图标后重置,所以我添加了一个......即使我从未明确加载过一个,django 似乎尝试从项目的根目录加载一个默认的......这不会发生对于从事该项目的任何其他开发人员。奇怪的。(为了完整性)如果其他人偶然发现了这一点,我会使用favicon io制作一个简单的文本。然后我将它加载到我的 html 中,如下所示:
{% load static %}
<!DOCTYPE html>
<html lang="en">
<head>
<link rel="shortcut icon" href="{% static 'images/favicon.ico' %}" />
...
Run Code Online (Sandbox Code Playgroud)
请务必在设置中正确设置您的静态路径。
Chr*_*ris 11
如果图标是 .png 格式而不是 .ico 格式,则会看到相同的行为。
此外,与在其他站点上看到的建议相反,将 Python 降级到 v3.6 并不能解决问题。错误 w 的屏幕截图。png 图标
似乎是 Django 问题,它可能会在未来的 Django 版本中永久修复。
在https://bugs.python.org/issue27682#msg348302之后,我进行了如下所示的更改:

然后我用 ConnectionAbortedError 替换了 BrokenPipeError。这似乎处理异常。
Django 3 的更新:我在 basehttp.py (rev.1.2.1) 中进行了以下更改,以消除所有讨厌的管道损坏错误消息:
Line 55: - return issubclass(exc_type, BrokenPipeError)
Line 55: + return issubclass(exc_type, (BrokenPipeError, ConnectionAbortedError, ConnectionResetError))
Line 71: - logger.info("- Broken pipe from %s\n", client_address)
Line 71: + pass
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
916 次 |
| 最近记录: |