【发布时间】:2018-07-03 15:49:09
【问题描述】:
我正在尝试在一个类中使用 websocket.WebSocketApp,以便以后可以使用从 websocket 检索到的数据:
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)
这是以后使用的关键
编辑: 我在错误之前运行的代码,以及在有效的情况之前运行的代码:
from NeuroStream import *
ns = NeuroStream('a_sensor', 'a_token')
ns.stream()
我得到的错误是:
'找不到记录器“websocket”的处理程序'
我看到了一个类似的帖子,但没有帮助: Using a websocket client as a class in python
【问题讨论】:
-
你能告诉我们你正在运行什么代码来得到那个错误吗?
-
不应该
d.stream()是ns.stream(),d来自哪里? -
对不起,你是对的,别介意