我无法搞清楚这一点。
我有一个Class,它在类“内部”打印控制台。我希望能够打印类的“外部”,以便我可以将数据流用于其他事情。如何从下面的代码中获取流?
from ws4py.client.threadedclient import WebSocketClient
import json
class FooClient(WebSocketClient):
msg=0
def opened(self):
self.send(json.dumps({"One": "bah", "Two": "bah"}))
def closed(self, code, reason=None):
print "Closed down", code, reason
def received_message(self, m):
if len(m) == 175:
self.close(reason='Remote server closed socket')
msg = json.loads(str(m))
#print msg
ws = FooClient('wss://ws-feed.foobar.com', protocols=['http-only', 'chat'])
ws.connect()
ws.run_forever()
我尝试了很多不同的东西,但尚未理解实现这一目标的正确方法。从概念上讲,我想:
ws = FooClient('wss://ws-feed.foobar.com', protocols=['http-only', 'chat'])
ws.connect()
ws.run_forever()
print msg
但显然这不起作用。
答案 0 :(得分:2)
为什么不在received_message()
打印消息?一旦你打电话给run_forever()
,它只会在你的客户端死亡(或断开连接?)时返回。你必须在执行循环中处理事件。
run_forever() -->
code handling web-sockets -->
event handlers <-- do it here
在我看来,你真正想做的是在不同进程/线程或执行器的上下文中运行此代码,以便继续执行其他操作。
看看:https://docs.python.org/3/library/concurrent.futures.html