Я пытаюсь использовать websocket.WebSocketApp внутри класса, чтобы позже я мог использовать данные, полученные из веб-сокета:
import requests
from urlparse import (urlparse, parse_qs)
import json
import websocket
class NeuroStream:
def __init__(self, sensor, token):
self._sensor = sensor
self.token = token
self.buf = []
return
def stream(self):
self.ws = websocket.WebSocketApp(
"wss://api.foofoo.com/api/v1/features/" + self._sensor
+ "/real-time/?all=true&access_token=" + self.token,
on_message=self.on_message,
on_error=self.on_error,
on_close=self.on_close)
self.ws.run_forever()
def on_error(self, error):
print(error)
def on_close(self):
print "connection lost"
def on_message(self, message):
message = json.loads(message)
biomarkers = message[u'features']
c1 = biomarkers[u'c1']
self.buf.append(c1)
Когда я определяю функции on_error, on_close и on_message вне области действия класса, заменяю self на ws и опускаю self в их вызовах, это работает. Но тогда я не могу использовать
self.buf.append(c1)
Что является ключевым для последующего использования
Edit:
Код, который я запускаю перед ошибкой, а также перед делом, которое работает:
from NeuroStream import *
ns = NeuroStream('a_sensor', 'a_token')
ns.stream()
Я получаю ошибку:
'Не удалось найти обработчики для регистратора "websocket"'
Я видел похожую ветку, но это не помогло:
Использование клиента веб-сокета в качестве класса в Python