运行Django学生管理项目时出现WinError 10060连接超时错误
Django学生管理项目启动连接超时问题解决
问题描述
执行python manage.py runserver启动项目时触发连接超时错误,核心报错为urllib.error.URLError: <urlopen error [WinError 10060] 连接尝试失败,因为连接方在一段时间后未正确响应,或已建立的连接因连接主机未响应而失败>。
完整报错信息
(venv) PS C:\Users\User\OneDrive\Desktop\student-management-using-django-main> python manage.py runserver Watching for file changes with StatReloader 执行系统检查... Exception in thread django-main-thread: Traceback (most recent call last): File "C:\Users\User\AppData\Local\Programs\Python\Python310\lib\urllib\request.py", line 1348, in do_open h.request(req.get_method(), req.selector, req.data, headers, File "C:\Users\User\AppData\Local\Programs\Python\Python310\lib\http\client.py", line 1282, in request self._send_request(method, url, body, headers, encode_chunked) File "C:\Users\User\AppData\Local\Programs\Python\Python310\lib\http\client.py", line 1328, in _send_request self.endheaders(body, encode_chunked=encode_chunked) File "C:\Users\User\AppData\Local\Programs\Python\Python310\lib\http\client.py", line 1277, in endheaders self._send_output(message_body, encode_chunked=encode_chunked) File "C:\Users\User\AppData\Local\Programs\Python\Python310\lib\http\client.py", line 1037, in _send_output self.send(msg) File "C:\Users\User\AppData\Local\Programs\Python\Python310\lib\http\client.py", line 975, in send self.connect() File "C:\Users\User\AppData\Local\Programs\Python\Python310\lib\http\client.py", line 941, in connect self.sock = self._create_connection( File "C:\Users\User\AppData\Local\Programs\Python\Python310\lib\socket.py", line 845, in create_connection raise err File "C:\Users\User\AppData\Local\Programs\Python\Python310\lib\socket.py", line 833, in create_connection sock.connect(sa) TimeoutError: [WinError 10060] 连接尝试失败,因为连接方在一段时间后未正确响应,或已建立的连接因连接主机未响应而失败 During handling of the above exception, another exception occurred: Traceback (most recent call last): File "C:\Users\User\AppData\Local\Programs\Python\Python310\lib\threading.py", line 1009, in _bootstrap_inner self.run() File "C:\Users\User\AppData\Local\Programs\Python\Python310\lib\threading.py", line 946, in run self._target(*self._args, **self._kwargs) File "D:\student-management-using-django-main\venv\lib\site-packages\django\utils\autoreload.py", line 53, in wrapper fn(*args, **kwargs) File "D:\student-management-using-django-main\venv\lib\site-packages\django\core\management\commands\runserver.py", line 118, in inner_run self.check(display_num_errors=True) File "D:\student-management-using-django-main\venv\lib\site-packages\django\core\management\base.py", line 392, in check all_issues = checks.run_checks( File "D:\student-management-using-django-main\venv\lib\site-packages\django\core\checks\registry.py", line 70, in run_checks new_errors = check(app_configs=app_configs, databases=databases) File "D:\student-management-using-django-main\venv\lib\site-packages\django\core\checks\urls.py", line 13, in check_url_config return check_resolver(resolver) File "D:\student-management-using-django-main\venv\lib\site-packages\django\core\checks\urls.py", line 23, in check_resolver return check_method() File "D:\student-management-using-django-main\venv\lib\site-packages\django\urls\resolvers.py", line 408, in check for pattern in self.url_patterns: File "D:\student-management-using-django-main\venv\lib\site-packages\django\utils\functional.py", line 48, in __get__ res = instance.__dict__[self.name] = self.func(instance) File "D:\student-management-using-django-main\venv\lib\site-packages\django\urls\resolvers.py", line 589, in url_patterns patterns = getattr(self.urlconf_module, "urlpatterns", self.urlconf_module) File "D:\student-management-using-django-main\venv\lib\site-packages\django\utils\functional.py", line 48, in __get__ res = instance.__dict__[self.name] = self.func(instance) File "D:\student-management-using-django-main\venv\lib\site-packages\django\urls\resolvers.py", line 582, in urlconf_module return import_module(self.urlconf_name) File "C:\Users\User\AppData\Local\Programs\Python\Python310\lib\importlib\__init__.py", line 126, in import_module return _bootstrap._gcd_import(name[level:], package, level) File "<frozen importlib._bootstrap>", line 1050, in _gcd_import File "<frozen importlib._bootstrap>", line 1027, in _find_and_load File "<frozen importlib._bootstrap>", line 1006, in _find_and_load_unlocked File "<frozen importlib._bootstrap>", line 688, in _load_unlocked File "<frozen importlib._bootstrap_external>", line 883, in exec_module File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed File "C:\Users\User\OneDrive\Desktop\student-management-using-django- main\student_management_system\urls.py", line 22, in <module> path("", include('main_app.urls')), File "D:\student-management-using-django-main\venv\lib\site-packages\django\urls\conf.py", line 34, in include urlconf_module = import_module(urlconf_module) File "C:\Users\User\AppData\Local\Programs\Python\Python310\lib\importlib\__init__.py", line 126, in import_module return _bootstrap._gcd_import(name[level:], package, level) File "<frozen importlib._bootstrap>", line 1050, in _gcd_import File "<frozen importlib._bootstrap>", line 1027, in _find_and_load File "<frozen importlib._bootstrap>", line 1006, in _find_and_load_unlocked File "<frozen importlib._bootstrap>", line 688, in _load_unlocked File "<frozen importlib._bootstrap_external>", line 883, in exec_module File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed File "C:\Users\User\OneDrive\Desktop\student-management-using-django-main\main_app\urls.py", line 6, in <module> from . import hod_views, staff_views, student_views, views File "C:\Users\User\OneDrive\Desktop\student-management-using-django- main\main_app\staff_views.py", line 10, in <module> from .detection import FaceRecognition File "C:\Users\User\OneDrive\Desktop\student-management-using-django-main\main_app\detection.py", line 88, in <module> students_present = fr.run_recognition() File "C:\Users\User\OneDrive\Desktop\student-management-using-django-main\main_app\detection.py", line 47, in run_recognition img_resp = urllib.request.urlopen(url) File "C:\Users\User\AppData\Local\Programs\Python\Python310\lib\urllib\request.py", line 216, in urlopen return opener.open(url, data, timeout) File "C:\Users\User\AppData\Local\Programs\Python\Python310\lib\urllib\request.py", line 519, in open response = self._open(req, data) File "C:\Users\User\AppData\Local\Programs\Python\Python310\lib\urllib\request.py", line 536, in _open result = self._call_chain(self.handle_open, protocol, protocol + File "C:\Users\User\AppData\Local\Programs\Python\Python310\lib\urllib\request.py", line 496, in _call_chain result = func(*args) File "C:\Users\User\AppData\Local\Programs\Python\Python310\lib\urllib\request.py", line 1377, in http_open return self.do_open(http.client.HTTPConnection, req) File "C:\Users\User\AppData\Local\Programs\Python\Python310\lib\urllib\request.py", line 1351, in do_open raise URLError(err) urllib.error.URLError: <urlopen error [WinError 10060] 连接尝试失败,因为连接方在一段时间后未正确响应,或已建立的连接因连接主机未响应而失败>
问题根源
Django启动时会递归导入所有关联模块,main_app/detection.py在模块级别直接执行了fr.run_recognition(),该方法内的urllib.request.urlopen(url)尝试请求外部URL,但目标地址无法访问或超时,导致整个服务启动流程中断。
解决方案
1. 调整代码执行时机
修改detection.py,将模块级别的执行代码移到函数内部,仅在业务需要时调用,而非模块加载时自动执行:
# detection.py fr = FaceRecognition() # 原错误代码:students_present = fr.run_recognition() # 修改为函数形式,供视图或其他逻辑调用 def get_students_present(): return fr.run_recognition()
2. 验证目标URL可用性
- 直接在浏览器或终端用
curl工具访问目标URL,确认是否能正常返回内容 - 检查本地网络是否有防火墙、代理拦截请求
- 给
urlopen添加超时参数,避免无限等待:
img_resp = urllib.request.urlopen(url, timeout=10) # 设置10秒超时阈值
3. 添加异常捕获逻辑
在run_recognition方法中加入异常处理,即使请求失败也不会导致服务启动失败:
def run_recognition(self): try: img_resp = urllib.request.urlopen(url, timeout=10) # 后续业务处理逻辑 except urllib.error.URLError as e: # 记录日志或返回默认值 print(f"人脸识别请求失败: {str(e)}") return []
内容的提问来源于stack exchange,提问作者project ph
相关产品推荐
相关产品推荐

