Итак, я пытаюсь сделать так, чтобы мое приложение 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 и сохранять его экземпляр где-нибудь еще для работы с информацией, которую я получаю, и помещать ее в свой собственный веб-сокет.
Можно ли как-то устранить эту ошибку, которую я получаю?