使用response.iter_lines()存储并比较最后两行



我有一个速率流,我需要存储和比较最后两行。例如,如果新的价格高于以前的价格,则排队事件。我的理解是iter_lines()只显示最后一行。我的问题是如何存储最后一行,等待新行并比较它们,然后将事件排队?我知道这很简单,但我仍然有麻烦,谢谢你的帮助!

这是我的UPDATED(3)流:

def stream_to_queue(self):
    response = self.connect_to_stream()
    if response.status_code != 200:
        return
    oldLine = ''    
    for line in response.iter_lines(1):
        if line < oldLine:
            try:
                msg = json.loads(line)
            except Exception as e:
                print "Caught exception when converting message into jsonn" + str(e)
                return
            if msg.has_key("instrument") or msg.has_key("tick"):
                print msg["tick"]
                instrument = msg["tick"]["instrument"]
                time = msg["tick"]["time"]
                bid = msg["tick"]["bid"]
                ask = msg["tick"]["ask"]
                stop = msg["tick"]["ask"]
                tev = TickEvent(instrument, time, bid, ask)
                self.events_queue.put(tev)
        oldLine = line

原功能:

def stream_to_queue(self):
    response = self.connect_to_stream()
    if response.status_code != 200:
        return
    for line in response.iter_lines(1):
        if line:
            try:
                msg = json.loads(line)
            except Exception as e:
                print "Caught exception when converting message into jsonn" + str(e)
                return
            if msg.has_key("instrument") or msg.has_key("tick"):
                print msg["tick"]
                instrument = msg["tick"]["instrument"]
                time = msg["tick"]["time"]
                bid = msg["tick"]["bid"]
                ask = msg["tick"]["ask"]
                stop = msg["tick"]["ask"]

修复功能:

def stream_to_queue(self):
    response = self.connect_to_stream()
    if response.status_code != 200:
        return
    last_msg = None   # new line
    for line in response.iter_lines(1):
        if line:
            try:
                msg = json.loads(line)
                if last_msg is None:   # new line
                    last_msg = msg     # new line
            except Exception as e:
                print "Caught exception when converting message into jsonn" + str(e)
                return
            # can now compare last msg with current msg
            if msg.has_key("instrument") or msg.has_key("tick"):
                print msg["tick"]
                instrument = msg["tick"]["instrument"]
                time = msg["tick"]["time"]
                bid = msg["tick"]["bid"]
                ask = msg["tick"]["ask"]
                stop = msg["tick"]["ask"]
            last_msg = msg   # new line (may want to indent 4 more spaces)

如果您希望last_msg具有某些信息,则将if last_msg is None检查移到if msg.has_key块的内部可能是有意义的。

相关内容

  • 没有找到相关文章