Получение соединения клиента socketio для получения ошибки «сигнал работает только в основном потоке» - PullRequest
1 голос
/ 06 марта 2020

Итак, я пытаюсь сделать так, чтобы мое приложение django автоматически подключалось к клиенту socketio, когда возникали какие-то условия, и анализировало данные из него, чтобы впоследствии отправить его в мой собственный веб-сокет и показать на веб-странице. Когда я использую этот код:

views.py

def match(request, match_id):
    match = get_object_or_404(Match, pk=match_id)
    context = {'match': match}
    if match.is_live:
        livescore = Livescore(match.match_id, ).socket()
        context.setdefault('livescore', livescore)
    return render(request, 'myapp/match.html', context)

для создания объекта этого класса:

class Livescore:
    def __init__(
        self, list_id=None, scoreboard_callback=None, event_callback=None
):
        self.list_id = list_id
        self.sb_callback = scoreboard_callback
        self.event_callback = event_callback

    def socket(self):
        sio = socketio.Client()

        @sio.event
        def connect():
            print("connection established")
            ready_data = {"listId": self.list_id}

            sio.emit("readyForMatch", json.dumps(ready_data))

        @sio.event
        def log(data):
            # do stuff

        @sio.event
        def event(data):
            # do stuff


        @sio.event
        def disconnect():
            print("disconnected from server")

        sio.connect("<websocket URI im trying to connect to for data parsing>")

        return sio

и анализа информация с обратными вызовами, я получаю эту ошибку:

ValueError: сигнал работает только в основном потоке

После того, как я выясняю эту проблему (если я делаю), я хочу поставить этот код в мой класс django -cron, который будет каждый раз проверять, выполнено ли условие, подключаться к socketio и сохранять его экземпляр где-нибудь еще для работы с информацией, которую я получаю, и помещать ее в свой собственный веб-сокет.

Можно ли как-то устранить эту ошибку, которую я получаю?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...