Это вопрос о том, как я могу найти точку отказа в сложном процессе. (Если вы сможете понять, что на самом деле происходит не так... вау.)
Я использую QuickFix
с Python 2.7
для подключения к фьючерсным рынкам, и я использую pandas
для обработки данных и помещения их в фреймы данных и т. д. Процесс выглядит следующим образом:
Подключитесь к адаптеру TT FIX, который обеспечивает доступ к обмену.
Отправьте MarketDataIncrementalRefreshRequest, что приведет к потоковой передаче данных (об этом сообщается каждый раз, когда совершается сделка). В результате время между входящими сообщениями в периоды занятости может составлять порядка 10 миллисекунд.
Каждое сообщение анализируется, преобразуется в кадр данных
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.
Я был бы признателен за помощь всем, кто привык к высокопроизводительным данным и, возможно, даже к этим программным пакетам.
В чем здесь может быть проблема? Как понять, что идет не так?
except Exception as err:
и на следующей строкеprint(str(err))
. - person CasualDemon   schedule 08.02.2014traceback
для печати трассировки.traceback.print_exc()
распечатает трассировку для текущего исключения. - person All Workers Are Essential   schedule 08.02.2014