使用RxPy,我是否需要主题进行数据依赖处理?

时间:2019-06-18 18:00:57

标签: python system.reactive rx-py

我是不熟悉rx的人,从我的读物开始,应该避免使用Subject s。但是我不确定如何避免在这里使用主题。

我有代表消息的字节流。每个消息包的格式为2字节长的前缀+消息,或者:

<2 byte length>< message with length from prefix >

我的解决方法是:

def get_first_message(obs):
    '''Get the first message from the stream'''
    return obs.take(2)\
        .buffer_with_count(2)\
        .map(lambda l_arr: int(''.join(l_arr)))\
        .first_or_default()\
        .filter(lambda x: x is not None)\
        .flat_map(lambda x: obs.take(x).buffer_with_count(x).first())


def get_messages(obs):
    '''Parse stream into messages'''
    window_openings = Subject()

    return obs.window(window_openings=window_openings)\
        .flat_map(lambda w: get_first_message(w))\
        .tap(on_next=lambda x: window_openings.on_next(x))

0 个答案:

没有答案