Django не работает в приложении ASGI во втором/отдельном процессе
У меня есть Django и FastAPI на process#1, и они работают в функциях Sync и Async без проблем. Я запускаю приложение SocketIO на process#2 с помощью multiprocessing. ProcessusingAsyncServerandASGIApp. The problem is that Django works with Sync functions like get()orcreate(), but if we use aget()oracreate()` процесс пропадает и исчезает. Остальная часть строки не запускается без ошибки.
self.sio = socketio.AsyncServer(
async_mode="aiohttp",
cors_allowed_origins=self.socket_config.cors_allowed_origins,
always_connect=self.socket_config.always_connect,
logger=self.logger if self.socket_config.logger else False,
engineio_logger=self.logger if self.socket_config.engineio_logger else False,
)
self.socket_application = socketio.ASGIApp(self.sio, socketio_path=self.socket_config.socketio_path)
и запустите его с помощью uvicorn с pro
multiprocessing.Process(
target=uvicorn.run,
kwargs={
"app": "0.0.0.0",
"host": 8002,
"port": int(service_config.SERVICE_PORT),
},
daemon=True
).start()
Я пытался добавить get_asgi_application() в other_asgi_app из socketio.ASGIApp, но ничего не изменилось.
Я думаю, что проблема не в настройках Django с разрешениями async, а между ASGIApp и Django.
Когда он зарегистрировал self.socket_application из ASGIApp, появилось кое-что интересное, ...DjangoDBProcessRemove object ....
Буду рад любой помощи.
Обновление: Если я запускаю приложение SocketIO в основном процессе, оно работает просто отлично. Так я и сделал. SocketIO в основном процессе и FastAPI во втором с мультипроцессом, На этот раз FastAPI столкнулся с этой проблемой.