2014-02-08 4 views
2

이것은 복잡한 프로세스에서 어떻게 실패 지점을 찾을 수 있는지에 대한 질문입니다. 내가 선물 시장에 연결 Python 2.7QuickFix을 사용하고내 스트리밍 데이터가 멈추는 이유를 알아내는 방법은 무엇입니까?

을 (당신은. 실제로 와우 ... 무슨 일이 잘못 알아낼 수있는 경우), 나는 데이터를 처리하고 등 dataframes에 넣어 pandas을 사용하고 있습니다 과정은 다음과 같습니다 :

  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() 
    

이 과정은 다음 작동이 중지, 때때로 분, 때로는 시간 동안 잘 작동합니다. 오류가 전혀 없으며 멈추게됩니다. 결과는 갭이있는 데이터입니다. 2 단계를 다시 수행하여 프로세스를 다시 시작할 수 있습니다.

높은 처리량 데이터 및 어쩌면 이러한 소프트웨어 패키지에 익숙한 사람의 도움을 주시면 감사하겠습니다.

여기에서 문제가 될 가능성이있는 것은 무엇입니까? 무엇이 잘못되었는지를 어떻게 알 수 있습니까?

위 실제로 문제를 해결하는 데 도움이되지 않았다 의견에 의해 제안 오류를 인쇄 : 나는 그것을 정리하는 방법이 질문에 건너 온 사람이 알려 것

+2

지금 중지되면 예외가 표시되지 않으므로 아무 것도 표시되지 않습니다. 귀하의 경로를 돕기 위해, 나는 시스템 오류를 포함한 모든 것을 잡는 예외 조항이 없도록 제안합니다. 그런 다음 stdout 또는 logging을 통해 예외를보고합니다. 두 예외 모두에 대해 예외를'except as err :'및'print (str (err))'행으로 변경하십시오. – CasualDemon

+0

감사합니다 @CasualDemon, 시장이 일요일 저녁에 열리 자마자이를 시도 할 것입니다. – Wapiti

+2

또한 traceback 모듈을 사용하여 추적을 인쇄 할 수 있습니다. 'traceback.print_exc()'는 현재 예외에 대한 추적을 출력합니다. – cpburnz

답변

2

체격. 데이터는 여전히 인쇄 오류없이 중단됩니다. 그 이유는 어떤 이유로 든 QuickFix가 오프라인으로 부팅되고 자동으로 다시 로그온하기 때문입니다. 분명히 이것은 FIX 응용 프로그램이 처리해야하는 것입니다.

변경 사항 : 수동으로 데이터 다운로드를 시작했기 때문에 오프라인으로 부팅 할 때마다 데이터가 중지되었습니다. 따라서 QuickFix의 OnLogon 기능에 데이터 요청을하면 프로그램이 로그온 할 때마다 자동으로 다운로드 요청을 반복 할 수있었습니다.

내 문제가 해결되었습니다. CasualDemon 및 cpburnz에게 감사드립니다.