Django не работает в приложении ASGI во втором/отдельном процессе
У меня есть Django и FastAPI на process#1, и они работают в функциях Sync и Async без проблем. Я запускаю приложение SocketIO на process#2 с помощью multiprocessing.
Processusing
AsyncServerand
ASGIApp. The problem is that Django works with Sync functions like
get()or
create(), but if we use
aget()or
acreate()` процесс пропадает и исчезает. Остальная часть строки не запускается без ошибки.
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 столкнулся с этой проблемой.