调试在线阅读
This commit is contained in:
parent
8ad03fcbf2
commit
02b2b2a2bf
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -159,7 +159,7 @@ STATICFILES_DIRS = [
|
||||
os.path.join(BASE_DIR, "static"),
|
||||
]
|
||||
|
||||
MEDIA_ROOT = "media" # 项目下的目录
|
||||
MEDIA_ROOT = os.path.join(BASE_DIR, "media") # 项目下的目录,使用绝对路径
|
||||
MEDIA_URL = "/media/" # 跟STATIC_URL类似,指定用户可以通过这个url找到文件
|
||||
|
||||
|
||||
|
||||
@ -121,7 +121,7 @@ urlpatterns = (
|
||||
path('sse/', sse_view, name='sse'),
|
||||
]
|
||||
+ static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
|
||||
+ static(settings.STATIC_URL, document_root=settings.STATIC_URL)
|
||||
+ static(settings.STATIC_URL, document_root=settings.STATICFILES_DIRS[0] if settings.STATICFILES_DIRS else None)
|
||||
+ [re_path(ele.get('re_path'), include(ele.get('include'))) for ele in settings.PLUGINS_URL_PATTERNS]
|
||||
)
|
||||
|
||||
|
||||
Binary file not shown.
@ -1,6 +1,8 @@
|
||||
import os
|
||||
from pathlib import Path
|
||||
|
||||
from application.settings import BASE_DIR
|
||||
# 定义BASE_DIR(避免循环导入)
|
||||
BASE_DIR = Path(__file__).resolve().parent.parent
|
||||
|
||||
# ================================================= #
|
||||
# *************** mysql数据库 配置 *************** #
|
||||
|
||||
@ -1,6 +1,8 @@
|
||||
import os
|
||||
from pathlib import Path
|
||||
|
||||
from application.settings import BASE_DIR
|
||||
# 定义BASE_DIR(避免循环导入)
|
||||
BASE_DIR = Path(__file__).resolve().parent.parent
|
||||
|
||||
# ================================================= #
|
||||
# *************** mysql数据库 配置 *************** #
|
||||
|
||||
Binary file not shown.
@ -12,7 +12,7 @@ class CrudBookModelSerializer(CustomModelSerializer):
|
||||
"""
|
||||
# 添加SerializerMethodField来处理image字段
|
||||
image = serializers.SerializerMethodField()
|
||||
location = serializers.SerializerMethodField()
|
||||
file = serializers.SerializerMethodField()
|
||||
|
||||
def get_image(self, obj):
|
||||
"""
|
||||
@ -26,16 +26,16 @@ class CrudBookModelSerializer(CustomModelSerializer):
|
||||
return settings.API_URL + obj.image
|
||||
return None
|
||||
|
||||
def get_location(self, obj):
|
||||
def get_file(self, obj):
|
||||
"""
|
||||
获取完整的图书URL
|
||||
获取完整的文件URL
|
||||
"""
|
||||
if obj.location:
|
||||
# 检查location是否已经是完整的URL
|
||||
if obj.location.startswith(('http://', 'https://')):
|
||||
return obj.location
|
||||
# 否则添加MEDIA_URL前缀
|
||||
return settings.API_URL + obj.location
|
||||
if obj.file:
|
||||
# 文件字段返回完整URL
|
||||
request = self.context.get('request')
|
||||
if request:
|
||||
return request.build_absolute_uri(obj.file.url)
|
||||
return settings.API_URL + obj.file.url
|
||||
return None
|
||||
|
||||
|
||||
|
||||
BIN
db.sqlite3
BIN
db.sqlite3
Binary file not shown.
@ -168997,3 +168997,59 @@ Traceback (most recent call last):
|
||||
File "C:\Users\EDY\.conda\envs\tushuguan\Lib\asyncio\proactor_events.py", line 165, in _call_connection_lost
|
||||
self._sock.shutdown(socket.SHUT_RDWR)
|
||||
ConnectionResetError: [WinError 10054] 远程主机强迫关闭了一个现有的连接。
|
||||
[2025-11-02 13:05:00,475][asyncio.default_exception_handler():1785] [ERROR] Exception in callback _ProactorBasePipeTransport._call_connection_lost(None)
|
||||
handle: <Handle _ProactorBasePipeTransport._call_connection_lost(None)>
|
||||
Traceback (most recent call last):
|
||||
File "C:\Users\EDY\.conda\envs\tushuguan\Lib\asyncio\events.py", line 84, in _run
|
||||
self._context.run(self._callback, *self._args)
|
||||
File "C:\Users\EDY\.conda\envs\tushuguan\Lib\asyncio\proactor_events.py", line 165, in _call_connection_lost
|
||||
self._sock.shutdown(socket.SHUT_RDWR)
|
||||
ConnectionResetError: [WinError 10054] 远程主机强迫关闭了一个现有的连接。
|
||||
[2025-11-02 13:05:00,476][asyncio.default_exception_handler():1785] [ERROR] Exception in callback _ProactorBasePipeTransport._call_connection_lost(None)
|
||||
handle: <Handle _ProactorBasePipeTransport._call_connection_lost(None)>
|
||||
Traceback (most recent call last):
|
||||
File "C:\Users\EDY\.conda\envs\tushuguan\Lib\asyncio\events.py", line 84, in _run
|
||||
self._context.run(self._callback, *self._args)
|
||||
File "C:\Users\EDY\.conda\envs\tushuguan\Lib\asyncio\proactor_events.py", line 165, in _call_connection_lost
|
||||
self._sock.shutdown(socket.SHUT_RDWR)
|
||||
ConnectionResetError: [WinError 10054] 远程主机强迫关闭了一个现有的连接。
|
||||
[2025-11-02 13:05:35,177][asyncio.default_exception_handler():1785] [ERROR] Exception in callback _ProactorBasePipeTransport._call_connection_lost(None)
|
||||
handle: <Handle _ProactorBasePipeTransport._call_connection_lost(None)>
|
||||
Traceback (most recent call last):
|
||||
File "C:\Users\EDY\.conda\envs\tushuguan\Lib\asyncio\events.py", line 84, in _run
|
||||
self._context.run(self._callback, *self._args)
|
||||
File "C:\Users\EDY\.conda\envs\tushuguan\Lib\asyncio\proactor_events.py", line 165, in _call_connection_lost
|
||||
self._sock.shutdown(socket.SHUT_RDWR)
|
||||
ConnectionResetError: [WinError 10054] 远程主机强迫关闭了一个现有的连接。
|
||||
[2025-11-02 13:10:06,217][asyncio.default_exception_handler():1785] [ERROR] Exception in callback _ProactorBasePipeTransport._call_connection_lost(None)
|
||||
handle: <Handle _ProactorBasePipeTransport._call_connection_lost(None)>
|
||||
Traceback (most recent call last):
|
||||
File "C:\Users\EDY\.conda\envs\tushuguan\Lib\asyncio\events.py", line 84, in _run
|
||||
self._context.run(self._callback, *self._args)
|
||||
File "C:\Users\EDY\.conda\envs\tushuguan\Lib\asyncio\proactor_events.py", line 165, in _call_connection_lost
|
||||
self._sock.shutdown(socket.SHUT_RDWR)
|
||||
ConnectionResetError: [WinError 10054] 远程主机强迫关闭了一个现有的连接。
|
||||
[2025-11-02 13:10:06,374][asyncio.default_exception_handler():1785] [ERROR] Exception in callback _ProactorBasePipeTransport._call_connection_lost(None)
|
||||
handle: <Handle _ProactorBasePipeTransport._call_connection_lost(None)>
|
||||
Traceback (most recent call last):
|
||||
File "C:\Users\EDY\.conda\envs\tushuguan\Lib\asyncio\events.py", line 84, in _run
|
||||
self._context.run(self._callback, *self._args)
|
||||
File "C:\Users\EDY\.conda\envs\tushuguan\Lib\asyncio\proactor_events.py", line 165, in _call_connection_lost
|
||||
self._sock.shutdown(socket.SHUT_RDWR)
|
||||
ConnectionResetError: [WinError 10054] 远程主机强迫关闭了一个现有的连接。
|
||||
[2025-11-02 13:12:22,081][asyncio.default_exception_handler():1785] [ERROR] Exception in callback _ProactorBasePipeTransport._call_connection_lost(None)
|
||||
handle: <Handle _ProactorBasePipeTransport._call_connection_lost(None)>
|
||||
Traceback (most recent call last):
|
||||
File "C:\Users\EDY\.conda\envs\tushuguan\Lib\asyncio\events.py", line 84, in _run
|
||||
self._context.run(self._callback, *self._args)
|
||||
File "C:\Users\EDY\.conda\envs\tushuguan\Lib\asyncio\proactor_events.py", line 165, in _call_connection_lost
|
||||
self._sock.shutdown(socket.SHUT_RDWR)
|
||||
ConnectionResetError: [WinError 10054] 远程主机强迫关闭了一个现有的连接。
|
||||
[2025-11-02 13:12:22,140][asyncio.default_exception_handler():1785] [ERROR] Exception in callback _ProactorBasePipeTransport._call_connection_lost(None)
|
||||
handle: <Handle _ProactorBasePipeTransport._call_connection_lost(None)>
|
||||
Traceback (most recent call last):
|
||||
File "C:\Users\EDY\.conda\envs\tushuguan\Lib\asyncio\events.py", line 84, in _run
|
||||
self._context.run(self._callback, *self._args)
|
||||
File "C:\Users\EDY\.conda\envs\tushuguan\Lib\asyncio\proactor_events.py", line 165, in _call_connection_lost
|
||||
self._sock.shutdown(socket.SHUT_RDWR)
|
||||
ConnectionResetError: [WinError 10054] 远程主机强迫关闭了一个现有的连接。
|
||||
|
||||
247
logs/server.log
247
logs/server.log
@ -176236,3 +176236,250 @@ ConnectionResetError: [WinError 10054] 远程主机强迫关闭了一个现有
|
||||
[2025-11-02 12:54:06,284][uvicorn.error._wait_tasks_to_complete():296] [INFO] Waiting for connections to close. (CTRL+C to force quit)
|
||||
[2025-11-02 12:55:55,929][uvicorn.error._wait_tasks_to_complete():303] [INFO] Waiting for background tasks to complete. (CTRL+C to force quit)
|
||||
[2025-11-02 12:55:55,929][uvicorn.error._wait_tasks_to_complete():303] [INFO] Waiting for background tasks to complete. (CTRL+C to force quit)
|
||||
[2025-11-02 13:03:18,997][uvicorn.error._serve():92] [INFO] Finished server process [36132]
|
||||
[2025-11-02 13:03:18,997][uvicorn.error._serve():92] [INFO] Finished server process [36132]
|
||||
[2025-11-02 13:04:31,720][uvicorn.error._serve():82] [INFO] Started server process [32668]
|
||||
[2025-11-02 13:04:31,720][uvicorn.error._serve():82] [INFO] Started server process [32668]
|
||||
[2025-11-02 13:04:31,721][uvicorn.error.startup():48] [INFO] Waiting for application startup.
|
||||
[2025-11-02 13:04:31,721][uvicorn.error.startup():48] [INFO] Waiting for application startup.
|
||||
[2025-11-02 13:04:31,722][uvicorn.error.main():94] [INFO] ASGI 'lifespan' protocol appears unsupported.
|
||||
[2025-11-02 13:04:31,722][uvicorn.error.main():94] [INFO] ASGI 'lifespan' protocol appears unsupported.
|
||||
[2025-11-02 13:04:31,722][uvicorn.error.startup():62] [INFO] Application startup complete.
|
||||
[2025-11-02 13:04:31,722][uvicorn.error.startup():62] [INFO] Application startup complete.
|
||||
[2025-11-02 13:04:31,723][uvicorn.error._log_started_message():214] [INFO] Uvicorn running on http://0.0.0.0:8000 (Press CTRL+C to quit)
|
||||
[2025-11-02 13:04:31,723][uvicorn.error._log_started_message():214] [INFO] Uvicorn running on http://0.0.0.0:8000 (Press CTRL+C to quit)
|
||||
[2025-11-02 13:04:59,691][uvicorn.access.send():466] [INFO] 127.0.0.1:55831 - "OPTIONS /api/system/user/user_info/ HTTP/1.1" 200
|
||||
[2025-11-02 13:04:59,691][uvicorn.access.send():466] [INFO] 127.0.0.1:55831 - "OPTIONS /api/system/user/user_info/ HTTP/1.1" 200
|
||||
[2025-11-02 13:05:00,152][uvicorn.access.send():466] [INFO] 127.0.0.1:55831 - "GET /api/system/user/user_info/ HTTP/1.1" 200
|
||||
[2025-11-02 13:05:00,152][uvicorn.access.send():466] [INFO] 127.0.0.1:55831 - "GET /api/system/user/user_info/ HTTP/1.1" 200
|
||||
[2025-11-02 13:05:00,160][uvicorn.access.send():466] [INFO] 127.0.0.1:55831 - "OPTIONS /api/system/menu_button/menu_button_all_permission/ HTTP/1.1" 200
|
||||
[2025-11-02 13:05:00,160][uvicorn.access.send():466] [INFO] 127.0.0.1:55831 - "OPTIONS /api/system/menu_button/menu_button_all_permission/ HTTP/1.1" 200
|
||||
[2025-11-02 13:05:00,162][uvicorn.access.send():466] [INFO] 127.0.0.1:54909 - "OPTIONS /api/init/settings/ HTTP/1.1" 200
|
||||
[2025-11-02 13:05:00,162][uvicorn.access.send():466] [INFO] 127.0.0.1:54909 - "OPTIONS /api/init/settings/ HTTP/1.1" 200
|
||||
[2025-11-02 13:05:00,163][uvicorn.access.send():466] [INFO] 127.0.0.1:56740 - "OPTIONS /api/system/dept/all_dept/ HTTP/1.1" 200
|
||||
[2025-11-02 13:05:00,163][uvicorn.access.send():466] [INFO] 127.0.0.1:56740 - "OPTIONS /api/system/dept/all_dept/ HTTP/1.1" 200
|
||||
[2025-11-02 13:05:00,164][uvicorn.access.send():466] [INFO] 127.0.0.1:53710 - "OPTIONS /api/init/dictionary/?dictionary_key=all HTTP/1.1" 200
|
||||
[2025-11-02 13:05:00,164][uvicorn.access.send():466] [INFO] 127.0.0.1:53710 - "OPTIONS /api/init/dictionary/?dictionary_key=all HTTP/1.1" 200
|
||||
[2025-11-02 13:05:00,165][uvicorn.access.send():466] [INFO] 127.0.0.1:63972 - "OPTIONS /api/system/menu/web_router/ HTTP/1.1" 200
|
||||
[2025-11-02 13:05:00,165][uvicorn.access.send():466] [INFO] 127.0.0.1:63972 - "OPTIONS /api/system/menu/web_router/ HTTP/1.1" 200
|
||||
[2025-11-02 13:05:00,178][uvicorn.access.send():466] [INFO] 127.0.0.1:53710 - "GET /api/init/dictionary/?dictionary_key=all HTTP/1.1" 200
|
||||
[2025-11-02 13:05:00,178][uvicorn.access.send():466] [INFO] 127.0.0.1:53710 - "GET /api/init/dictionary/?dictionary_key=all HTTP/1.1" 200
|
||||
[2025-11-02 13:05:00,185][uvicorn.access.send():466] [INFO] 127.0.0.1:54909 - "GET /api/init/settings/ HTTP/1.1" 200
|
||||
[2025-11-02 13:05:00,185][uvicorn.access.send():466] [INFO] 127.0.0.1:54909 - "GET /api/init/settings/ HTTP/1.1" 200
|
||||
[2025-11-02 13:05:00,188][uvicorn.access.send():466] [INFO] 127.0.0.1:56740 - "GET /api/system/dept/all_dept/ HTTP/1.1" 200
|
||||
[2025-11-02 13:05:00,188][uvicorn.access.send():466] [INFO] 127.0.0.1:56740 - "GET /api/system/dept/all_dept/ HTTP/1.1" 200
|
||||
[2025-11-02 13:05:00,189][uvicorn.access.send():466] [INFO] 127.0.0.1:55831 - "GET /api/system/menu_button/menu_button_all_permission/ HTTP/1.1" 200
|
||||
[2025-11-02 13:05:00,189][uvicorn.access.send():466] [INFO] 127.0.0.1:55831 - "GET /api/system/menu_button/menu_button_all_permission/ HTTP/1.1" 200
|
||||
[2025-11-02 13:05:00,190][uvicorn.access.send():466] [INFO] 127.0.0.1:63972 - "GET /api/system/menu/web_router/ HTTP/1.1" 200
|
||||
[2025-11-02 13:05:00,190][uvicorn.access.send():466] [INFO] 127.0.0.1:63972 - "GET /api/system/menu/web_router/ HTTP/1.1" 200
|
||||
[2025-11-02 13:05:00,409][uvicorn.access.send():466] [INFO] 127.0.0.1:55831 - "OPTIONS /api/CrudBookModelViewSet/?page=1&limit=20 HTTP/1.1" 200
|
||||
[2025-11-02 13:05:00,409][uvicorn.access.send():466] [INFO] 127.0.0.1:55831 - "OPTIONS /api/CrudBookModelViewSet/?page=1&limit=20 HTTP/1.1" 200
|
||||
[2025-11-02 13:05:00,430][uvicorn.access.send():466] [INFO] 127.0.0.1:55831 - "GET /api/CrudBookModelViewSet/?page=1&limit=20 HTTP/1.1" 200
|
||||
[2025-11-02 13:05:00,430][uvicorn.access.send():466] [INFO] 127.0.0.1:55831 - "GET /api/CrudBookModelViewSet/?page=1&limit=20 HTTP/1.1" 200
|
||||
[2025-11-02 13:05:00,472][django.request.log_response():241] [WARNING] Not Found: /media/files/2/a/2ae854214abcfcc08511cfdeb24a7f7a.jpg
|
||||
[2025-11-02 13:05:00,472][django.request.log_response():241] [WARNING] Not Found: /media/files/f/6/f6998313b51c8ad90447a7b89130894f.jpg
|
||||
[2025-11-02 13:05:00,473][uvicorn.access.send():466] [INFO] 127.0.0.1:61711 - "GET /media/files/2/a/2ae854214abcfcc08511cfdeb24a7f7a.jpg HTTP/1.1" 404
|
||||
[2025-11-02 13:05:00,473][uvicorn.access.send():466] [INFO] 127.0.0.1:61711 - "GET /media/files/2/a/2ae854214abcfcc08511cfdeb24a7f7a.jpg HTTP/1.1" 404
|
||||
[2025-11-02 13:05:00,474][uvicorn.access.send():466] [INFO] 127.0.0.1:59289 - "GET /media/files/f/6/f6998313b51c8ad90447a7b89130894f.jpg HTTP/1.1" 404
|
||||
[2025-11-02 13:05:00,474][uvicorn.access.send():466] [INFO] 127.0.0.1:59289 - "GET /media/files/f/6/f6998313b51c8ad90447a7b89130894f.jpg HTTP/1.1" 404
|
||||
[2025-11-02 13:05:00,475][asyncio.default_exception_handler():1785] [ERROR] Exception in callback _ProactorBasePipeTransport._call_connection_lost(None)
|
||||
handle: <Handle _ProactorBasePipeTransport._call_connection_lost(None)>
|
||||
Traceback (most recent call last):
|
||||
File "C:\Users\EDY\.conda\envs\tushuguan\Lib\asyncio\events.py", line 84, in _run
|
||||
self._context.run(self._callback, *self._args)
|
||||
File "C:\Users\EDY\.conda\envs\tushuguan\Lib\asyncio\proactor_events.py", line 165, in _call_connection_lost
|
||||
self._sock.shutdown(socket.SHUT_RDWR)
|
||||
ConnectionResetError: [WinError 10054] 远程主机强迫关闭了一个现有的连接。
|
||||
[2025-11-02 13:05:00,476][asyncio.default_exception_handler():1785] [ERROR] Exception in callback _ProactorBasePipeTransport._call_connection_lost(None)
|
||||
handle: <Handle _ProactorBasePipeTransport._call_connection_lost(None)>
|
||||
Traceback (most recent call last):
|
||||
File "C:\Users\EDY\.conda\envs\tushuguan\Lib\asyncio\events.py", line 84, in _run
|
||||
self._context.run(self._callback, *self._args)
|
||||
File "C:\Users\EDY\.conda\envs\tushuguan\Lib\asyncio\proactor_events.py", line 165, in _call_connection_lost
|
||||
self._sock.shutdown(socket.SHUT_RDWR)
|
||||
ConnectionResetError: [WinError 10054] 远程主机强迫关闭了一个现有的连接。
|
||||
[2025-11-02 13:05:00,607][uvicorn.access.send():466] [INFO] 127.0.0.1:55831 - "GET /sse/?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlbl90eXBlIjoiYWNjZXNzIiwiZXhwIjoxNzYyMDk4NjcyLCJpYXQiOjE3NjIwMTIyNzIsImp0aSI6IjQ3MDkyMDNhMzA1ZDQwNTJhZjc4NjU1NzhkNDdkNGI4IiwidXNlcl9pZCI6MX0.pTsbQPoafCmt4F-WRdKK_UiQNtAUAo2JnzBuhyiXk5A HTTP/1.1" 200
|
||||
[2025-11-02 13:05:00,607][uvicorn.access.send():466] [INFO] 127.0.0.1:55831 - "GET /sse/?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlbl90eXBlIjoiYWNjZXNzIiwiZXhwIjoxNzYyMDk4NjcyLCJpYXQiOjE3NjIwMTIyNzIsImp0aSI6IjQ3MDkyMDNhMzA1ZDQwNTJhZjc4NjU1NzhkNDdkNGI4IiwidXNlcl9pZCI6MX0.pTsbQPoafCmt4F-WRdKK_UiQNtAUAo2JnzBuhyiXk5A HTTP/1.1" 200
|
||||
[2025-11-02 13:05:03,959][uvicorn.access.send():466] [INFO] 127.0.0.1:63972 - "OPTIONS /api/CrudBookModelViewSet/2/file/ HTTP/1.1" 200
|
||||
[2025-11-02 13:05:03,959][uvicorn.access.send():466] [INFO] 127.0.0.1:63972 - "OPTIONS /api/CrudBookModelViewSet/2/file/ HTTP/1.1" 200
|
||||
[2025-11-02 13:05:03,976][django.request.log_response():241] [WARNING] Not Found: /api/CrudBookModelViewSet/2/file/
|
||||
[2025-11-02 13:05:03,977][uvicorn.access.send():466] [INFO] 127.0.0.1:63972 - "GET /api/CrudBookModelViewSet/2/file/ HTTP/1.1" 404
|
||||
[2025-11-02 13:05:03,977][uvicorn.access.send():466] [INFO] 127.0.0.1:63972 - "GET /api/CrudBookModelViewSet/2/file/ HTTP/1.1" 404
|
||||
[2025-11-02 13:05:19,896][uvicorn.access.send():466] [INFO] 127.0.0.1:49248 - "OPTIONS /api/CrudBookModelViewSet/2/file/ HTTP/1.1" 200
|
||||
[2025-11-02 13:05:19,896][uvicorn.access.send():466] [INFO] 127.0.0.1:49248 - "OPTIONS /api/CrudBookModelViewSet/2/file/ HTTP/1.1" 200
|
||||
[2025-11-02 13:05:19,911][django.request.log_response():241] [WARNING] Not Found: /api/CrudBookModelViewSet/2/file/
|
||||
[2025-11-02 13:05:19,912][uvicorn.access.send():466] [INFO] 127.0.0.1:49248 - "GET /api/CrudBookModelViewSet/2/file/ HTTP/1.1" 404
|
||||
[2025-11-02 13:05:19,912][uvicorn.access.send():466] [INFO] 127.0.0.1:49248 - "GET /api/CrudBookModelViewSet/2/file/ HTTP/1.1" 404
|
||||
[2025-11-02 13:05:35,175][django.request.log_response():241] [WARNING] Not Found: /media/files/f/6/f6998313b51c8ad90447a7b89130894f.jpg
|
||||
[2025-11-02 13:05:35,175][uvicorn.access.send():466] [INFO] 127.0.0.1:49946 - "GET /media/files/f/6/f6998313b51c8ad90447a7b89130894f.jpg HTTP/1.1" 404
|
||||
[2025-11-02 13:05:35,175][uvicorn.access.send():466] [INFO] 127.0.0.1:49946 - "GET /media/files/f/6/f6998313b51c8ad90447a7b89130894f.jpg HTTP/1.1" 404
|
||||
[2025-11-02 13:05:35,177][asyncio.default_exception_handler():1785] [ERROR] Exception in callback _ProactorBasePipeTransport._call_connection_lost(None)
|
||||
handle: <Handle _ProactorBasePipeTransport._call_connection_lost(None)>
|
||||
Traceback (most recent call last):
|
||||
File "C:\Users\EDY\.conda\envs\tushuguan\Lib\asyncio\events.py", line 84, in _run
|
||||
self._context.run(self._callback, *self._args)
|
||||
File "C:\Users\EDY\.conda\envs\tushuguan\Lib\asyncio\proactor_events.py", line 165, in _call_connection_lost
|
||||
self._sock.shutdown(socket.SHUT_RDWR)
|
||||
ConnectionResetError: [WinError 10054] 远程主机强迫关闭了一个现有的连接。
|
||||
[2025-11-02 13:05:42,871][uvicorn.access.send():466] [INFO] 127.0.0.1:50235 - "OPTIONS /api/CrudBookModelViewSet/2/ HTTP/1.1" 200
|
||||
[2025-11-02 13:05:42,871][uvicorn.access.send():466] [INFO] 127.0.0.1:50235 - "OPTIONS /api/CrudBookModelViewSet/2/ HTTP/1.1" 200
|
||||
[2025-11-02 13:05:42,947][uvicorn.access.send():466] [INFO] 127.0.0.1:50235 - "PUT /api/CrudBookModelViewSet/2/ HTTP/1.1" 200
|
||||
[2025-11-02 13:05:42,947][uvicorn.access.send():466] [INFO] 127.0.0.1:50235 - "PUT /api/CrudBookModelViewSet/2/ HTTP/1.1" 200
|
||||
[2025-11-02 13:06:51,564][uvicorn.access.send():466] [INFO] 127.0.0.1:55524 - "OPTIONS /api/CrudBookModelViewSet/2/file/ HTTP/1.1" 200
|
||||
[2025-11-02 13:06:51,564][uvicorn.access.send():466] [INFO] 127.0.0.1:55524 - "OPTIONS /api/CrudBookModelViewSet/2/file/ HTTP/1.1" 200
|
||||
[2025-11-02 13:06:51,579][django.request.log_response():241] [WARNING] Not Found: /api/CrudBookModelViewSet/2/file/
|
||||
[2025-11-02 13:06:51,580][uvicorn.access.send():466] [INFO] 127.0.0.1:55524 - "GET /api/CrudBookModelViewSet/2/file/ HTTP/1.1" 404
|
||||
[2025-11-02 13:06:51,580][uvicorn.access.send():466] [INFO] 127.0.0.1:55524 - "GET /api/CrudBookModelViewSet/2/file/ HTTP/1.1" 404
|
||||
[2025-11-02 13:10:05,123][uvicorn.access.send():466] [INFO] 127.0.0.1:52734 - "OPTIONS /api/system/user/user_info/ HTTP/1.1" 200
|
||||
[2025-11-02 13:10:05,123][uvicorn.access.send():466] [INFO] 127.0.0.1:52734 - "OPTIONS /api/system/user/user_info/ HTTP/1.1" 200
|
||||
[2025-11-02 13:10:05,133][uvicorn.access.send():466] [INFO] 127.0.0.1:52734 - "GET /api/system/user/user_info/ HTTP/1.1" 200
|
||||
[2025-11-02 13:10:05,133][uvicorn.access.send():466] [INFO] 127.0.0.1:52734 - "GET /api/system/user/user_info/ HTTP/1.1" 200
|
||||
[2025-11-02 13:10:05,386][uvicorn.access.send():466] [INFO] 127.0.0.1:52734 - "OPTIONS /api/system/menu_button/menu_button_all_permission/ HTTP/1.1" 200
|
||||
[2025-11-02 13:10:05,386][uvicorn.access.send():466] [INFO] 127.0.0.1:52734 - "OPTIONS /api/system/menu_button/menu_button_all_permission/ HTTP/1.1" 200
|
||||
[2025-11-02 13:10:05,393][uvicorn.access.send():466] [INFO] 127.0.0.1:50549 - "OPTIONS /api/init/settings/ HTTP/1.1" 200
|
||||
[2025-11-02 13:10:05,393][uvicorn.access.send():466] [INFO] 127.0.0.1:50549 - "OPTIONS /api/init/settings/ HTTP/1.1" 200
|
||||
[2025-11-02 13:10:05,395][uvicorn.access.send():466] [INFO] 127.0.0.1:50653 - "OPTIONS /api/system/dept/all_dept/ HTTP/1.1" 200
|
||||
[2025-11-02 13:10:05,395][uvicorn.access.send():466] [INFO] 127.0.0.1:50653 - "OPTIONS /api/system/dept/all_dept/ HTTP/1.1" 200
|
||||
[2025-11-02 13:10:05,398][uvicorn.access.send():466] [INFO] 127.0.0.1:63754 - "OPTIONS /api/init/dictionary/?dictionary_key=all HTTP/1.1" 200
|
||||
[2025-11-02 13:10:05,398][uvicorn.access.send():466] [INFO] 127.0.0.1:63754 - "OPTIONS /api/init/dictionary/?dictionary_key=all HTTP/1.1" 200
|
||||
[2025-11-02 13:10:05,401][uvicorn.access.send():466] [INFO] 127.0.0.1:50653 - "OPTIONS /api/system/menu/web_router/ HTTP/1.1" 200
|
||||
[2025-11-02 13:10:05,401][uvicorn.access.send():466] [INFO] 127.0.0.1:50653 - "OPTIONS /api/system/menu/web_router/ HTTP/1.1" 200
|
||||
[2025-11-02 13:10:05,404][uvicorn.access.send():466] [INFO] 127.0.0.1:52734 - "GET /api/system/menu_button/menu_button_all_permission/ HTTP/1.1" 200
|
||||
[2025-11-02 13:10:05,404][uvicorn.access.send():466] [INFO] 127.0.0.1:52734 - "GET /api/system/menu_button/menu_button_all_permission/ HTTP/1.1" 200
|
||||
[2025-11-02 13:10:05,419][uvicorn.access.send():466] [INFO] 127.0.0.1:63754 - "GET /api/init/dictionary/?dictionary_key=all HTTP/1.1" 200
|
||||
[2025-11-02 13:10:05,419][uvicorn.access.send():466] [INFO] 127.0.0.1:63754 - "GET /api/init/dictionary/?dictionary_key=all HTTP/1.1" 200
|
||||
[2025-11-02 13:10:05,423][uvicorn.access.send():466] [INFO] 127.0.0.1:50549 - "GET /api/init/settings/ HTTP/1.1" 200
|
||||
[2025-11-02 13:10:05,423][uvicorn.access.send():466] [INFO] 127.0.0.1:50549 - "GET /api/init/settings/ HTTP/1.1" 200
|
||||
[2025-11-02 13:10:05,425][uvicorn.access.send():466] [INFO] 127.0.0.1:55561 - "GET /api/system/dept/all_dept/ HTTP/1.1" 200
|
||||
[2025-11-02 13:10:05,425][uvicorn.access.send():466] [INFO] 127.0.0.1:55561 - "GET /api/system/dept/all_dept/ HTTP/1.1" 200
|
||||
[2025-11-02 13:10:05,427][uvicorn.access.send():466] [INFO] 127.0.0.1:50653 - "GET /api/system/menu/web_router/ HTTP/1.1" 200
|
||||
[2025-11-02 13:10:05,427][uvicorn.access.send():466] [INFO] 127.0.0.1:50653 - "GET /api/system/menu/web_router/ HTTP/1.1" 200
|
||||
[2025-11-02 13:10:06,072][uvicorn.access.send():466] [INFO] 127.0.0.1:50653 - "OPTIONS /api/CrudBookModelViewSet/?page=1&limit=20 HTTP/1.1" 200
|
||||
[2025-11-02 13:10:06,072][uvicorn.access.send():466] [INFO] 127.0.0.1:50653 - "OPTIONS /api/CrudBookModelViewSet/?page=1&limit=20 HTTP/1.1" 200
|
||||
[2025-11-02 13:10:06,088][uvicorn.access.send():466] [INFO] 127.0.0.1:50653 - "GET /api/CrudBookModelViewSet/?page=1&limit=20 HTTP/1.1" 200
|
||||
[2025-11-02 13:10:06,088][uvicorn.access.send():466] [INFO] 127.0.0.1:50653 - "GET /api/CrudBookModelViewSet/?page=1&limit=20 HTTP/1.1" 200
|
||||
[2025-11-02 13:10:06,214][django.request.log_response():241] [WARNING] Not Found: /media/files/f/6/f6998313b51c8ad90447a7b89130894f.jpg
|
||||
[2025-11-02 13:10:06,215][uvicorn.access.send():466] [INFO] 127.0.0.1:49738 - "GET /media/files/f/6/f6998313b51c8ad90447a7b89130894f.jpg HTTP/1.1" 404
|
||||
[2025-11-02 13:10:06,215][uvicorn.access.send():466] [INFO] 127.0.0.1:49738 - "GET /media/files/f/6/f6998313b51c8ad90447a7b89130894f.jpg HTTP/1.1" 404
|
||||
[2025-11-02 13:10:06,217][asyncio.default_exception_handler():1785] [ERROR] Exception in callback _ProactorBasePipeTransport._call_connection_lost(None)
|
||||
handle: <Handle _ProactorBasePipeTransport._call_connection_lost(None)>
|
||||
Traceback (most recent call last):
|
||||
File "C:\Users\EDY\.conda\envs\tushuguan\Lib\asyncio\events.py", line 84, in _run
|
||||
self._context.run(self._callback, *self._args)
|
||||
File "C:\Users\EDY\.conda\envs\tushuguan\Lib\asyncio\proactor_events.py", line 165, in _call_connection_lost
|
||||
self._sock.shutdown(socket.SHUT_RDWR)
|
||||
ConnectionResetError: [WinError 10054] 远程主机强迫关闭了一个现有的连接。
|
||||
[2025-11-02 13:10:06,371][django.request.log_response():241] [WARNING] Not Found: /media/files/2/a/2ae854214abcfcc08511cfdeb24a7f7a.jpg
|
||||
[2025-11-02 13:10:06,371][uvicorn.access.send():466] [INFO] 127.0.0.1:55255 - "GET /media/files/2/a/2ae854214abcfcc08511cfdeb24a7f7a.jpg HTTP/1.1" 404
|
||||
[2025-11-02 13:10:06,371][uvicorn.access.send():466] [INFO] 127.0.0.1:55255 - "GET /media/files/2/a/2ae854214abcfcc08511cfdeb24a7f7a.jpg HTTP/1.1" 404
|
||||
[2025-11-02 13:10:06,374][asyncio.default_exception_handler():1785] [ERROR] Exception in callback _ProactorBasePipeTransport._call_connection_lost(None)
|
||||
handle: <Handle _ProactorBasePipeTransport._call_connection_lost(None)>
|
||||
Traceback (most recent call last):
|
||||
File "C:\Users\EDY\.conda\envs\tushuguan\Lib\asyncio\events.py", line 84, in _run
|
||||
self._context.run(self._callback, *self._args)
|
||||
File "C:\Users\EDY\.conda\envs\tushuguan\Lib\asyncio\proactor_events.py", line 165, in _call_connection_lost
|
||||
self._sock.shutdown(socket.SHUT_RDWR)
|
||||
ConnectionResetError: [WinError 10054] 远程主机强迫关闭了一个现有的连接。
|
||||
[2025-11-02 13:10:06,760][uvicorn.access.send():466] [INFO] 127.0.0.1:50653 - "GET /sse/?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlbl90eXBlIjoiYWNjZXNzIiwiZXhwIjoxNzYyMDk4NjcyLCJpYXQiOjE3NjIwMTIyNzIsImp0aSI6IjQ3MDkyMDNhMzA1ZDQwNTJhZjc4NjU1NzhkNDdkNGI4IiwidXNlcl9pZCI6MX0.pTsbQPoafCmt4F-WRdKK_UiQNtAUAo2JnzBuhyiXk5A HTTP/1.1" 200
|
||||
[2025-11-02 13:10:06,760][uvicorn.access.send():466] [INFO] 127.0.0.1:50653 - "GET /sse/?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlbl90eXBlIjoiYWNjZXNzIiwiZXhwIjoxNzYyMDk4NjcyLCJpYXQiOjE3NjIwMTIyNzIsImp0aSI6IjQ3MDkyMDNhMzA1ZDQwNTJhZjc4NjU1NzhkNDdkNGI4IiwidXNlcl9pZCI6MX0.pTsbQPoafCmt4F-WRdKK_UiQNtAUAo2JnzBuhyiXk5A HTTP/1.1" 200
|
||||
[2025-11-02 13:12:20,894][uvicorn.access.send():466] [INFO] 127.0.0.1:59445 - "OPTIONS /api/system/user/user_info/ HTTP/1.1" 200
|
||||
[2025-11-02 13:12:20,894][uvicorn.access.send():466] [INFO] 127.0.0.1:59445 - "OPTIONS /api/system/user/user_info/ HTTP/1.1" 200
|
||||
[2025-11-02 13:12:20,906][uvicorn.access.send():466] [INFO] 127.0.0.1:59445 - "GET /api/system/user/user_info/ HTTP/1.1" 200
|
||||
[2025-11-02 13:12:20,906][uvicorn.access.send():466] [INFO] 127.0.0.1:59445 - "GET /api/system/user/user_info/ HTTP/1.1" 200
|
||||
[2025-11-02 13:12:21,034][uvicorn.access.send():466] [INFO] 127.0.0.1:59445 - "OPTIONS /api/system/menu_button/menu_button_all_permission/ HTTP/1.1" 200
|
||||
[2025-11-02 13:12:21,034][uvicorn.access.send():466] [INFO] 127.0.0.1:59445 - "OPTIONS /api/system/menu_button/menu_button_all_permission/ HTTP/1.1" 200
|
||||
[2025-11-02 13:12:21,037][uvicorn.access.send():466] [INFO] 127.0.0.1:56771 - "OPTIONS /api/init/settings/ HTTP/1.1" 200
|
||||
[2025-11-02 13:12:21,037][uvicorn.access.send():466] [INFO] 127.0.0.1:56771 - "OPTIONS /api/init/settings/ HTTP/1.1" 200
|
||||
[2025-11-02 13:12:21,040][uvicorn.access.send():466] [INFO] 127.0.0.1:59445 - "OPTIONS /api/system/dept/all_dept/ HTTP/1.1" 200
|
||||
[2025-11-02 13:12:21,040][uvicorn.access.send():466] [INFO] 127.0.0.1:59445 - "OPTIONS /api/system/dept/all_dept/ HTTP/1.1" 200
|
||||
[2025-11-02 13:12:21,044][uvicorn.access.send():466] [INFO] 127.0.0.1:56771 - "OPTIONS /api/init/dictionary/?dictionary_key=all HTTP/1.1" 200
|
||||
[2025-11-02 13:12:21,044][uvicorn.access.send():466] [INFO] 127.0.0.1:56771 - "OPTIONS /api/init/dictionary/?dictionary_key=all HTTP/1.1" 200
|
||||
[2025-11-02 13:12:21,048][uvicorn.access.send():466] [INFO] 127.0.0.1:53736 - "OPTIONS /api/system/menu/web_router/ HTTP/1.1" 200
|
||||
[2025-11-02 13:12:21,048][uvicorn.access.send():466] [INFO] 127.0.0.1:53736 - "OPTIONS /api/system/menu/web_router/ HTTP/1.1" 200
|
||||
[2025-11-02 13:12:21,066][uvicorn.access.send():466] [INFO] 127.0.0.1:56771 - "GET /api/init/dictionary/?dictionary_key=all HTTP/1.1" 200
|
||||
[2025-11-02 13:12:21,066][uvicorn.access.send():466] [INFO] 127.0.0.1:56771 - "GET /api/init/dictionary/?dictionary_key=all HTTP/1.1" 200
|
||||
[2025-11-02 13:12:21,078][uvicorn.access.send():466] [INFO] 127.0.0.1:60714 - "GET /api/init/settings/ HTTP/1.1" 200
|
||||
[2025-11-02 13:12:21,078][uvicorn.access.send():466] [INFO] 127.0.0.1:60714 - "GET /api/init/settings/ HTTP/1.1" 200
|
||||
[2025-11-02 13:12:21,081][uvicorn.access.send():466] [INFO] 127.0.0.1:62829 - "GET /api/system/menu_button/menu_button_all_permission/ HTTP/1.1" 200
|
||||
[2025-11-02 13:12:21,081][uvicorn.access.send():466] [INFO] 127.0.0.1:62829 - "GET /api/system/menu_button/menu_button_all_permission/ HTTP/1.1" 200
|
||||
[2025-11-02 13:12:21,084][uvicorn.access.send():466] [INFO] 127.0.0.1:53736 - "GET /api/system/menu/web_router/ HTTP/1.1" 200
|
||||
[2025-11-02 13:12:21,084][uvicorn.access.send():466] [INFO] 127.0.0.1:53736 - "GET /api/system/menu/web_router/ HTTP/1.1" 200
|
||||
[2025-11-02 13:12:21,087][uvicorn.access.send():466] [INFO] 127.0.0.1:59445 - "GET /api/system/dept/all_dept/ HTTP/1.1" 200
|
||||
[2025-11-02 13:12:21,087][uvicorn.access.send():466] [INFO] 127.0.0.1:59445 - "GET /api/system/dept/all_dept/ HTTP/1.1" 200
|
||||
[2025-11-02 13:12:21,927][uvicorn.access.send():466] [INFO] 127.0.0.1:59445 - "OPTIONS /api/CrudBookModelViewSet/?page=1&limit=20 HTTP/1.1" 200
|
||||
[2025-11-02 13:12:21,927][uvicorn.access.send():466] [INFO] 127.0.0.1:59445 - "OPTIONS /api/CrudBookModelViewSet/?page=1&limit=20 HTTP/1.1" 200
|
||||
[2025-11-02 13:12:21,939][uvicorn.access.send():466] [INFO] 127.0.0.1:59445 - "GET /api/CrudBookModelViewSet/?page=1&limit=20 HTTP/1.1" 200
|
||||
[2025-11-02 13:12:21,939][uvicorn.access.send():466] [INFO] 127.0.0.1:59445 - "GET /api/CrudBookModelViewSet/?page=1&limit=20 HTTP/1.1" 200
|
||||
[2025-11-02 13:12:22,079][django.request.log_response():241] [WARNING] Not Found: /media/files/f/6/f6998313b51c8ad90447a7b89130894f.jpg
|
||||
[2025-11-02 13:12:22,080][uvicorn.access.send():466] [INFO] 127.0.0.1:65263 - "GET /media/files/f/6/f6998313b51c8ad90447a7b89130894f.jpg HTTP/1.1" 404
|
||||
[2025-11-02 13:12:22,080][uvicorn.access.send():466] [INFO] 127.0.0.1:65263 - "GET /media/files/f/6/f6998313b51c8ad90447a7b89130894f.jpg HTTP/1.1" 404
|
||||
[2025-11-02 13:12:22,081][asyncio.default_exception_handler():1785] [ERROR] Exception in callback _ProactorBasePipeTransport._call_connection_lost(None)
|
||||
handle: <Handle _ProactorBasePipeTransport._call_connection_lost(None)>
|
||||
Traceback (most recent call last):
|
||||
File "C:\Users\EDY\.conda\envs\tushuguan\Lib\asyncio\events.py", line 84, in _run
|
||||
self._context.run(self._callback, *self._args)
|
||||
File "C:\Users\EDY\.conda\envs\tushuguan\Lib\asyncio\proactor_events.py", line 165, in _call_connection_lost
|
||||
self._sock.shutdown(socket.SHUT_RDWR)
|
||||
ConnectionResetError: [WinError 10054] 远程主机强迫关闭了一个现有的连接。
|
||||
[2025-11-02 13:12:22,138][django.request.log_response():241] [WARNING] Not Found: /media/files/2/a/2ae854214abcfcc08511cfdeb24a7f7a.jpg
|
||||
[2025-11-02 13:12:22,139][uvicorn.access.send():466] [INFO] 127.0.0.1:56037 - "GET /media/files/2/a/2ae854214abcfcc08511cfdeb24a7f7a.jpg HTTP/1.1" 404
|
||||
[2025-11-02 13:12:22,139][uvicorn.access.send():466] [INFO] 127.0.0.1:56037 - "GET /media/files/2/a/2ae854214abcfcc08511cfdeb24a7f7a.jpg HTTP/1.1" 404
|
||||
[2025-11-02 13:12:22,140][asyncio.default_exception_handler():1785] [ERROR] Exception in callback _ProactorBasePipeTransport._call_connection_lost(None)
|
||||
handle: <Handle _ProactorBasePipeTransport._call_connection_lost(None)>
|
||||
Traceback (most recent call last):
|
||||
File "C:\Users\EDY\.conda\envs\tushuguan\Lib\asyncio\events.py", line 84, in _run
|
||||
self._context.run(self._callback, *self._args)
|
||||
File "C:\Users\EDY\.conda\envs\tushuguan\Lib\asyncio\proactor_events.py", line 165, in _call_connection_lost
|
||||
self._sock.shutdown(socket.SHUT_RDWR)
|
||||
ConnectionResetError: [WinError 10054] 远程主机强迫关闭了一个现有的连接。
|
||||
[2025-11-02 13:12:22,521][uvicorn.access.send():466] [INFO] 127.0.0.1:59445 - "GET /sse/?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlbl90eXBlIjoiYWNjZXNzIiwiZXhwIjoxNzYyMDk4NjcyLCJpYXQiOjE3NjIwMTIyNzIsImp0aSI6IjQ3MDkyMDNhMzA1ZDQwNTJhZjc4NjU1NzhkNDdkNGI4IiwidXNlcl9pZCI6MX0.pTsbQPoafCmt4F-WRdKK_UiQNtAUAo2JnzBuhyiXk5A HTTP/1.1" 200
|
||||
[2025-11-02 13:12:22,521][uvicorn.access.send():466] [INFO] 127.0.0.1:59445 - "GET /sse/?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlbl90eXBlIjoiYWNjZXNzIiwiZXhwIjoxNzYyMDk4NjcyLCJpYXQiOjE3NjIwMTIyNzIsImp0aSI6IjQ3MDkyMDNhMzA1ZDQwNTJhZjc4NjU1NzhkNDdkNGI4IiwidXNlcl9pZCI6MX0.pTsbQPoafCmt4F-WRdKK_UiQNtAUAo2JnzBuhyiXk5A HTTP/1.1" 200
|
||||
[2025-11-02 13:13:00,550][uvicorn.access.send():466] [INFO] 127.0.0.1:49919 - "OPTIONS /api/CrudBookModelViewSet/2/file/ HTTP/1.1" 200
|
||||
[2025-11-02 13:13:00,550][uvicorn.access.send():466] [INFO] 127.0.0.1:49919 - "OPTIONS /api/CrudBookModelViewSet/2/file/ HTTP/1.1" 200
|
||||
[2025-11-02 13:13:00,561][django.request.log_response():241] [WARNING] Not Found: /api/CrudBookModelViewSet/2/file/
|
||||
[2025-11-02 13:13:00,562][uvicorn.access.send():466] [INFO] 127.0.0.1:49919 - "GET /api/CrudBookModelViewSet/2/file/ HTTP/1.1" 404
|
||||
[2025-11-02 13:13:00,562][uvicorn.access.send():466] [INFO] 127.0.0.1:49919 - "GET /api/CrudBookModelViewSet/2/file/ HTTP/1.1" 404
|
||||
[2025-11-02 13:13:34,239][django.request.log_response():241] [WARNING] Not Found: /media/files/e/8/e8cc692135fd445f18dc128c36e49bff.epub
|
||||
[2025-11-02 13:13:34,240][uvicorn.access.send():466] [INFO] 127.0.0.1:64807 - "GET /media/files/e/8/e8cc692135fd445f18dc128c36e49bff.epub HTTP/1.1" 404
|
||||
[2025-11-02 13:13:34,240][uvicorn.access.send():466] [INFO] 127.0.0.1:64807 - "GET /media/files/e/8/e8cc692135fd445f18dc128c36e49bff.epub HTTP/1.1" 404
|
||||
[2025-11-02 13:14:46,913][uvicorn.access.send():466] [INFO] 127.0.0.1:58311 - "OPTIONS /api/CrudBookModelViewSet/2/file/ HTTP/1.1" 200
|
||||
[2025-11-02 13:14:46,913][uvicorn.access.send():466] [INFO] 127.0.0.1:58311 - "OPTIONS /api/CrudBookModelViewSet/2/file/ HTTP/1.1" 200
|
||||
[2025-11-02 13:14:46,922][django.request.log_response():241] [WARNING] Not Found: /api/CrudBookModelViewSet/2/file/
|
||||
[2025-11-02 13:14:46,923][uvicorn.access.send():466] [INFO] 127.0.0.1:58311 - "GET /api/CrudBookModelViewSet/2/file/ HTTP/1.1" 404
|
||||
[2025-11-02 13:14:46,923][uvicorn.access.send():466] [INFO] 127.0.0.1:58311 - "GET /api/CrudBookModelViewSet/2/file/ HTTP/1.1" 404
|
||||
[2025-11-02 13:23:40,289][uvicorn.error.shutdown():258] [INFO] Shutting down
|
||||
[2025-11-02 13:23:40,289][uvicorn.error.shutdown():258] [INFO] Shutting down
|
||||
[2025-11-02 13:23:40,400][uvicorn.error._wait_tasks_to_complete():296] [INFO] Waiting for connections to close. (CTRL+C to force quit)
|
||||
[2025-11-02 13:23:40,400][uvicorn.error._wait_tasks_to_complete():296] [INFO] Waiting for connections to close. (CTRL+C to force quit)
|
||||
[2025-11-02 13:23:41,584][uvicorn.error._serve():92] [INFO] Finished server process [32668]
|
||||
[2025-11-02 13:23:41,584][uvicorn.error._serve():92] [INFO] Finished server process [32668]
|
||||
[2025-11-02 13:24:00,590][uvicorn.error._serve():82] [INFO] Started server process [19728]
|
||||
[2025-11-02 13:24:00,590][uvicorn.error._serve():82] [INFO] Started server process [19728]
|
||||
[2025-11-02 13:24:00,590][uvicorn.error.startup():48] [INFO] Waiting for application startup.
|
||||
[2025-11-02 13:24:00,590][uvicorn.error.startup():48] [INFO] Waiting for application startup.
|
||||
[2025-11-02 13:24:00,591][uvicorn.error.main():94] [INFO] ASGI 'lifespan' protocol appears unsupported.
|
||||
[2025-11-02 13:24:00,591][uvicorn.error.main():94] [INFO] ASGI 'lifespan' protocol appears unsupported.
|
||||
[2025-11-02 13:24:00,591][uvicorn.error.startup():62] [INFO] Application startup complete.
|
||||
[2025-11-02 13:24:00,591][uvicorn.error.startup():62] [INFO] Application startup complete.
|
||||
[2025-11-02 13:24:00,592][uvicorn.error._log_started_message():214] [INFO] Uvicorn running on http://0.0.0.0:8000 (Press CTRL+C to quit)
|
||||
[2025-11-02 13:24:00,592][uvicorn.error._log_started_message():214] [INFO] Uvicorn running on http://0.0.0.0:8000 (Press CTRL+C to quit)
|
||||
[2025-11-02 13:24:01,022][uvicorn.access.send():466] [INFO] 127.0.0.1:58202 - "GET /sse/?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlbl90eXBlIjoiYWNjZXNzIiwiZXhwIjoxNzYyMDk4NjcyLCJpYXQiOjE3NjIwMTIyNzIsImp0aSI6IjQ3MDkyMDNhMzA1ZDQwNTJhZjc4NjU1NzhkNDdkNGI4IiwidXNlcl9pZCI6MX0.pTsbQPoafCmt4F-WRdKK_UiQNtAUAo2JnzBuhyiXk5A HTTP/1.1" 200
|
||||
[2025-11-02 13:24:01,022][uvicorn.access.send():466] [INFO] 127.0.0.1:58202 - "GET /sse/?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlbl90eXBlIjoiYWNjZXNzIiwiZXhwIjoxNzYyMDk4NjcyLCJpYXQiOjE3NjIwMTIyNzIsImp0aSI6IjQ3MDkyMDNhMzA1ZDQwNTJhZjc4NjU1NzhkNDdkNGI4IiwidXNlcl9pZCI6MX0.pTsbQPoafCmt4F-WRdKK_UiQNtAUAo2JnzBuhyiXk5A HTTP/1.1" 200
|
||||
[2025-11-02 13:24:27,464][uvicorn.access.send():466] [INFO] 127.0.0.1:49186 - "OPTIONS /api/CrudBookModelViewSet/2/file/ HTTP/1.1" 200
|
||||
[2025-11-02 13:24:27,464][uvicorn.access.send():466] [INFO] 127.0.0.1:49186 - "OPTIONS /api/CrudBookModelViewSet/2/file/ HTTP/1.1" 200
|
||||
[2025-11-02 13:24:27,495][uvicorn.access.send():466] [INFO] 127.0.0.1:49186 - "GET /api/CrudBookModelViewSet/2/file/ HTTP/1.1" 200
|
||||
[2025-11-02 13:24:27,495][uvicorn.access.send():466] [INFO] 127.0.0.1:49186 - "GET /api/CrudBookModelViewSet/2/file/ HTTP/1.1" 200
|
||||
[2025-11-02 13:24:27,508][uvicorn.access.send():466] [INFO] 127.0.0.1:49186 - "GET /media/books/hamlet_NkSTa6g.epub HTTP/1.1" 200
|
||||
[2025-11-02 13:24:27,508][uvicorn.access.send():466] [INFO] 127.0.0.1:49186 - "GET /media/books/hamlet_NkSTa6g.epub HTTP/1.1" 200
|
||||
[2025-11-02 13:24:27,582][uvicorn.access.send():466] [INFO] 127.0.0.1:49186 - "OPTIONS /api/reading-progress/by_book/?book_id=2 HTTP/1.1" 200
|
||||
[2025-11-02 13:24:27,582][uvicorn.access.send():466] [INFO] 127.0.0.1:49186 - "OPTIONS /api/reading-progress/by_book/?book_id=2 HTTP/1.1" 200
|
||||
[2025-11-02 13:24:27,600][uvicorn.access.send():466] [INFO] 127.0.0.1:49186 - "GET /api/reading-progress/by_book/?book_id=2 HTTP/1.1" 200
|
||||
[2025-11-02 13:24:27,600][uvicorn.access.send():466] [INFO] 127.0.0.1:49186 - "GET /api/reading-progress/by_book/?book_id=2 HTTP/1.1" 200
|
||||
[2025-11-02 13:24:30,686][uvicorn.access.send():466] [INFO] 127.0.0.1:49186 - "OPTIONS /api/reading-progress/ HTTP/1.1" 200
|
||||
[2025-11-02 13:24:30,686][uvicorn.access.send():466] [INFO] 127.0.0.1:49186 - "OPTIONS /api/reading-progress/ HTTP/1.1" 200
|
||||
[2025-11-02 13:24:30,803][uvicorn.access.send():466] [INFO] 127.0.0.1:49186 - "POST /api/reading-progress/ HTTP/1.1" 200
|
||||
[2025-11-02 13:24:30,803][uvicorn.access.send():466] [INFO] 127.0.0.1:49186 - "POST /api/reading-progress/ HTTP/1.1" 200
|
||||
[2025-11-02 13:24:39,748][uvicorn.access.send():466] [INFO] 127.0.0.1:59255 - "OPTIONS /api/reading-progress/ HTTP/1.1" 200
|
||||
[2025-11-02 13:24:39,748][uvicorn.access.send():466] [INFO] 127.0.0.1:59255 - "OPTIONS /api/reading-progress/ HTTP/1.1" 200
|
||||
[2025-11-02 13:24:39,836][uvicorn.access.send():466] [INFO] 127.0.0.1:59255 - "POST /api/reading-progress/ HTTP/1.1" 200
|
||||
[2025-11-02 13:24:39,836][uvicorn.access.send():466] [INFO] 127.0.0.1:59255 - "POST /api/reading-progress/ HTTP/1.1" 200
|
||||
|
||||
71
test_book_api.py
Normal file
71
test_book_api.py
Normal file
@ -0,0 +1,71 @@
|
||||
#!/usr/bin/env python
|
||||
# -*- coding: utf-8 -*-
|
||||
"""
|
||||
测试图书文件API
|
||||
"""
|
||||
import os
|
||||
import sys
|
||||
import django
|
||||
|
||||
# 添加项目根目录到Python路径
|
||||
sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))
|
||||
|
||||
# 设置Django环境变量
|
||||
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'application.settings')
|
||||
|
||||
# 初始化Django
|
||||
django.setup()
|
||||
|
||||
from crud_book.models import CrudBookModel
|
||||
from django.conf import settings
|
||||
|
||||
print("=" * 60)
|
||||
print("图书文件API测试")
|
||||
print("=" * 60)
|
||||
|
||||
# 检查配置
|
||||
print("\n1. 配置检查:")
|
||||
print(f"MEDIA_ROOT: {settings.MEDIA_ROOT}")
|
||||
print(f"MEDIA_URL: {settings.MEDIA_URL}")
|
||||
print(f"BASE_DIR: {settings.BASE_DIR}")
|
||||
|
||||
# 检查媒体目录
|
||||
print("\n2. 媒体目录检查:")
|
||||
media_dir = os.path.join(settings.BASE_DIR, "media")
|
||||
print(f"媒体目录: {media_dir}")
|
||||
print(f"目录存在: {os.path.exists(media_dir)}")
|
||||
|
||||
books_dir = os.path.join(media_dir, "books")
|
||||
print(f"图书目录: {books_dir}")
|
||||
print(f"目录存在: {os.path.exists(books_dir)}")
|
||||
|
||||
if os.path.exists(books_dir):
|
||||
files = os.listdir(books_dir)
|
||||
print(f"图书文件: {files}")
|
||||
|
||||
# 检查图书数据
|
||||
print("\n3. 图书数据检查:")
|
||||
books = CrudBookModel.objects.all()
|
||||
print(f"总图书数: {books.count()}")
|
||||
|
||||
for book in books[:5]: # 只显示前5本
|
||||
print(f"\n图书 ID={book.id}:")
|
||||
print(f" 书名: {book.title}")
|
||||
print(f" 文件字段存在: {bool(book.file)}")
|
||||
if book.file:
|
||||
try:
|
||||
file_path = book.file.path
|
||||
print(f" 文件路径: {file_path}")
|
||||
print(f" 文件存在: {os.path.exists(file_path)}")
|
||||
print(f" 文件URL: {book.file.url}")
|
||||
|
||||
# 构建完整URL
|
||||
base_url = "http://127.0.0.1:8000"
|
||||
full_url = f"{base_url}{book.file.url}"
|
||||
print(f" 完整URL: {full_url}")
|
||||
except Exception as e:
|
||||
print(f" 错误: {e}")
|
||||
|
||||
print("\n" + "=" * 60)
|
||||
print("测试完成")
|
||||
print("=" * 60)
|
||||
Loading…
Reference in New Issue
Block a user