Сервер Django иногда зависает
Я новичок в Django и столкнулся со странной проблемой, что сервер иногда зависает.
Сервер использует APScheduler
для выполнения периодических задач и отправки данных на фронтенд через WebSocket. Поэтому, после того как сервер замерз, я нажал CRTL+C, чтобы выполнить прерывание клавиатуры. Сервер снова стал работать нормально.
Я запускаю сервер в режиме отладки локально на своей машине. Но эта проблема возникает только один или два раза за последние две недели. В остальное время он работает нормально.
В первый раз это произошло, когда я пытался войти в систему.
Application instance \<Task pending name='Task-1119' coro=\<StaticFilesWrapper.__call__() running at D:\\Python\\Python310\\lib\\site-packages\\channels\\staticfiles.py:44\> wait_for.\<Future pending cb=\[\_chain_future.\<locals\>.\_call_check_cancel() at D:\\Python\\Python310\\lib\\asyncio\\futures.py:385, Task.task_wakeup()\]\>\> for connection \<WebRequest at Ox25f4bObad70 method=POST uri=/admin/login/ clientproto=HTTP/1.1\> took too long to shut down and was killed
Во второй раз это произошло, когда я попытался посетить taskManager
страницу.
Application instance \<Task pending name='Task-153' coro=\<StaticFilesWrapper.__call__() running at D:\\Python\\Python310\\lib\\site-packages\\channels\\staticfiles.py:44\> wait_for.\<Future pending cb=\[\_chain_future.\<locals\>.\_call_check_cancel() at D:\\Python\\Python310\\lib\\asyncio\\futures.py:385, Task.task_wakeup()\]\>\> for connection \<WebRequest at Ox19fbb5140550 method=POST uri=/taskManager clientproto=HTTP/1.1\> took too long to shut down and was killed
Python: 3.10.7
Django: 3.2
Канал: 3.0.5 И я использую InMemoryChannelLayer
Я не уверен, заклинило ли его при попытке ответить GET или POST, или сначала заклинило сервер, поэтому он не может обработать ни один запрос.
Я пытался найти эту проблему в Google. Похоже, что у других разработчиков может возникнуть подобная проблема из-за WebSocket. Я добавил несколько msg для печати перед вызовом любой функции WebSocketConsumer
. Но я не увидел никаких связанных с этим функций в cmd.
Теперь я действительно запутался. Поскольку я не могу воспроизвести проблему. Может ли кто-нибудь дать мне несколько предложений о том, как отладить эту проблему?