打印到课堂外的控制台

时间:2016-06-23 15:32:54

标签: python

我无法搞清楚这一点。

我有一个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

但显然这不起作用。

1 个答案:

答案 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