Процесс сокетов Django

Я столкнулся с небольшой проблемой, которую мне нужно решить. У меня есть приложение на Django, и мне нужен websocket, но мне не нравятся каналы Django, поэтому я создал сокет-сервер во Flask и пытаюсь подключить к нему Django, создав промежуточное ПО, которое при вызове запускает процесс, который отправляет сообщения через процесс, что у него есть в очереди

Но либо общая переменная не работает, либо сам процесс не работает должным образом. Пожалуйста, если у вас есть совет или решение, напишите также, как завершить процесс с сокетом, когда django завершает работу

Вот мой код:

socket.py
---
import socketio
import json
from project.settings import SOCKET_CONFIG, MANAGER
from multiprocessing import Process

sio = socketio.Client()

class Socket:

    queue = MANAGER.list()

    def __init__(self, get_response):
        self.get_response = get_response
        thread = Process(target=Socket.process_loop, args=())
        thread.start()

    def __call__(self, request):
        return self.get_response(request)

    @staticmethod
    def process_loop():
        sio.connect('http://{}:{}'.format(SOCKET_CONFIG["host"],SOCKET_CONFIG["port"]))
        while True:
            try:
                import time
                time.sleep(1)
                data = Socket.queue.pop(0)
                sio.emit('message', data)
            except BaseException as e: print(e)

settings.py
---
import os, subprocess
from multiprocessing import Process, Manager
MANAGER = Manager()
SOCKET_CONFIG={
    "host":"localhost",
    "port":8001
}
MIDDLEWARE = [
...
'_middlewares.socket.Socket'
]
...
Вернуться на верх