def setUp(self): print "Setup!!!" from datetime import datetime for relpath in [ '../data', './data' ]: fp = os.path.abspath( relpath) if os.path.exists(fp): break print fp self.bp = BerkeleyPersister( fp, "SENDER","PHROMS", dt = datetime( 2009, 1, 11) ) self.spec = parse_specification(version = "FIX.4.2") (self.inDb,self.outDb) = self.bp.getTodayPersister( ) # data can arrive in arbitrary shapes and sizes so need # to ensure that a parser can cope with all the data ( even byte-at-a-time) print [ x.partition("=") for x in "a=b|".split("|") ] print [ x.partition("=") for x in "a=b|c".split("|") ] print [ x.partition("=") for x in "a=b|c=".split("|") ] print [ x.partition("=") for x in "a=b|c=d".split("|") ] print self.inDb.stat() # Build a big pyfix string c = self.inDb.cursor() self.megaString = '' messages = 0 while True: i_s = c.next() if not i_s: break _, s = i_s self.megaString+= s print "Megastring is %s long" % len(self.megaString )
from datetime import datetime import time from FIXParser import SynchronousParser from FIXSpec import parse_specification from pyfix.persistence import BerkeleyPersister fixSpec = parse_specification(version="FIX.4.2") fr = "/Users/andy/persist/send" bp = BerkeleyPersister(fr, dt=datetime(2009, 1, 13)) (inDb, outDb) = bp.getTodayPersister("SENDER", "PYFIX") #p = BerkeleyPersister( fileRoot, dt = datetime(2009, 11,1) ) p = SynchronousParser(fixSpec) def doit(): for db in (inDb, outDb): start = time.time() i = 0.0 c = db.cursor() while True: v = c.next() if not v: break msg, _, _ = p.feed(v[1]) i += 1 endTime = time.time() dur = endTime - start print "%s parsed %s messages in %s secs (%s/sec)" % (db, i, dur,