作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试在类中使用 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()
我得到的错误是:
'No handlers could be found for logger "websocket"'
我看到了类似的帖子,但没有帮助: Using a websocket client as a class in python
最佳答案
我观察到两个问题。
1) "wss://api.foofoo.com/api/v1/features/"+ self.sensor
应该是 "wss://api.foofoo.com/api/v1/features/"+ self._sensor
因为您在初始化期间定义了 self._sensor =sensor
。
2) 看起来您正在尝试使用 websocket
库的客户端功能。尝试按如下方式安装 websocket-client
,然后重新运行代码。pip 安装 websocket-client
通过上述两项更改,代码对我有用。
Python 2.7.14 (default, Mar 22 2018, 14:43:05)
[GCC 4.2.1 Compatible Apple LLVM 9.0.0 (clang-900.0.39.2)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> from aam import NeuroStream
>>> ns = NeuroStream('a_sensor', 'a_token')
>>> ns.stream()
>>>
关于python - 如何在类中实现websocket?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51158618/
我是一名优秀的程序员,十分优秀!