如何找出流式数据停止的原因?

时间:2014-02-08 00:59:26

标签: python pandas streaming quickfix fix-protocol

这是一个关于如何在复杂过程中找到失败点的问题。 (如果你能弄清楚究竟出了什么问题......哇。)

我正在使用QuickFixPython 2.7连接到期货市场,我使用pandas处理数据并将其放入数据框等。过程如下:< / p>

  1. 连接到TT FIX适配器,提供交换访问。

  2. 提交MarketDataIncrementalRefreshRequest,这会产生流数据(每次交易时都会报告)。结果,在繁忙时段期间输入消息之间的时间可以是10毫秒的量级。

  3. 解析每条消息,转换为pandas数据帧,并与该市场的预先存在的数据帧连接。代码:

    #df is dataframe of trades with 10 columns
    df.index = pd.to_datetime(df.TIME)
    #concatenate with prior data 
    #TS_DIC is a dictionary holding trade data for various markets
    try:
        df_prev = TS_DIC[market_key]
        TS_DIC[market_key] = pd.concat([df_prev,df])
    
    except:
        #in the case this is the first message received:
        TS_DIC[market_key] = df
    
    #now write to disk
    try: 
    #if file exists just write
        to_file = open('path/for/data', 'a+')
        df.to_csv(mode='a+', path_or_buf= to_file, header=False, index=False)
        to_file.close()
    except: 
    #create the file with headers and write
        to_file = open(path+name, 'wb')
        df.to_csv( path_or_buf= to_file, index=False)
        to_file.close()
    
  4. 此过程运行正常,有时持续数小时,有时持续数分钟,然后停止工作。从来没有任何错误,只是停止。结果是有差距的数据。我可以通过再次执行第2步来重新开始此过程。

    我很感激任何习惯高吞吐量数据的人的帮助,甚至可能是这些软件包。

    这可能是什么问题?我怎么弄清楚出了什么问题?

1 个答案:

答案 0 :(得分:2)

想想我会让遇到这个问题的人知道我是如何解决的:

按照上述评论的建议打印错误实际上并没有帮助解决问题。数据仍然会停止而不会出现打印错误。原因是有时QuickFix会因任何原因脱机启动,并会自动重新登录。显然这是FIX应用程序必须处理的事情。

发生了什么:因为我手动启动数据下载,每次启动离线时,数据都会停止。因此,通过将数据请求放入QuickFix的OnLogon函数,我可以在程序登录时自动重复下载请求。

这解决了我的问题。感谢CasualDemon和cpburnz。