def __init__(self, opt, instance_name): self.options = opt self.instance_name = instance_name handlers = [ (r'/', WebSocketHandler), (r'/get_deposit(.*)', DepositHandler), (r'/_webhook/verification_form', VerificationWebHookHandler), (r'/_webhook/deposit_receipt', DepositReceiptWebHookHandler), (r'/process_deposit(.*)', ProcessDepositHandler), (r'/api/(?P<version>[^\/]+)/(?P<symbol>[^\/]+)/(?P<resource>[^\/]+)', RestApiHandler) ] settings = dict( cookie_secret='cookie_secret' ) tornado.web.Application.__init__(self, handlers, **settings) self.allowed_origins = json.loads(self.options.allowed_origins) self.allow_all_origins = self.allowed_origins[0] == '*' input_log_file_handler = logging.handlers.TimedRotatingFileHandler( os.path.expanduser(self.options.gateway_log), when='MIDNIGHT') formatter = logging.Formatter('%(asctime)s - %(message)s') input_log_file_handler.setFormatter(formatter) self.replay_logger = logging.getLogger(self.instance_name) self.replay_logger.setLevel(logging.INFO) self.replay_logger.addHandler(input_log_file_handler) ch = logging.StreamHandler(sys.stdout) ch.setLevel(logging.DEBUG) ch.setFormatter(logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')) self.replay_logger.addHandler(ch) self.replay_logger.info('START') self.log_start_data() from models import Base, db_bootstrap db_engine = self.options.sqlalchemy_engine + ':///' +\ os.path.expanduser(self.options.sqlalchemy_connection_string) engine = create_engine( db_engine, echo=self.options.db_echo) Base.metadata.create_all(engine) self.db_session = scoped_session(sessionmaker(bind=engine)) db_bootstrap(self.db_session) self.zmq_context = zmq.Context() self.trade_in_socket = self.zmq_context.socket(zmq.REQ) self.trade_in_socket.connect(self.options.trade_in) self.application_trade_client = TradeClient( self.zmq_context, self.trade_in_socket) self.application_trade_client.connect() self.security_list = self.application_trade_client.getSecurityList() self.md_subscriber = {} for instrument in self.security_list.get('Instruments'): symbol = instrument['Symbol'] self.md_subscriber[symbol] = MarketDataSubscriber.get(symbol, self) self.md_subscriber[symbol].subscribe( self.zmq_context, self.options.trade_pub, self.application_trade_client) last_trade_id = Trade.get_last_trade_id(self.db_session) trade_list = self.application_trade_client.getLastTrades(last_trade_id) for trade in trade_list: msg = dict() msg['id'] = trade[0] msg['symbol'] = trade[1] msg['side'] = trade[2] msg['price'] = trade[3] msg['size'] = trade[4] msg['buyer_id'] = trade[5] msg['seller_id'] = trade[6] msg['buyer_username'] = trade[7] msg['seller_username'] = trade[8] msg['created'] = trade[9] msg['trade_date'] = trade[9][:10] msg['trade_time'] = trade[9][11:] msg['order_id'] = trade[10] msg['counter_order_id'] = trade[11] Trade.create( self.db_session, msg) all_trades = Trade.get_all_trades(self.db_session) for t in all_trades: trade_info = dict() trade_info['price'] = t.price trade_info['size'] = t.size trade_info['trade_date'] = t.created.strftime('%Y-%m-%d') trade_info['trade_time'] = t.created.strftime('%H:%M:%S') self.md_subscriber[ t.symbol ].inst_status.push_trade(trade_info) for symbol, subscriber in self.md_subscriber.iteritems(): subscriber.ready() self.connections = {} self.heart_beat_timer = tornado.ioloop.PeriodicCallback( self.send_heartbeat_to_trade, 30000) self.heart_beat_timer.start()
def __init__(self, opt): handlers = [ (r'/', WebSocketHandler), (r'/get_deposit(.*)', DepositHandler), (r'/_webhook/verification_form', VerificationWebHookHandler), (r'/_webhook/deposit_receipt', DepositReceiptWebHookHandler), (r'/process_deposit(.*)', ProcessDepositHandler), (r'/api/(?P<version>[^\/]+)/(?P<symbol>[^\/]+)/(?P<resource>[^\/]+)', RestApiHandler) ] settings = dict( cookie_secret='cookie_secret' ) tornado.web.Application.__init__(self, handlers, **settings) self.replay_logger = logging.getLogger("REPLAY") self.replay_logger.setLevel(logging.INFO) self.replay_logger.addHandler(input_log_file_handler) self.replay_logger.info('START') self.log_start_data() from models import ENGINE, db_bootstrap self.db_session = scoped_session(sessionmaker(bind=ENGINE)) db_bootstrap(self.db_session) self.zmq_context = zmq.Context() self.trade_in_socket = self.zmq_context.socket(zmq.REQ) self.trade_in_socket.connect(opt.trade_in) self.application_trade_client = TradeClient( self.zmq_context, self.trade_in_socket) self.application_trade_client.connect() instruments = self.application_trade_client.getSecurityList() self.md_subscriber = {} for instrument in instruments: symbol = instrument['Symbol'] self.md_subscriber[symbol] = MarketDataSubscriber.get(symbol, self) self.md_subscriber[symbol].subscribe( self.zmq_context, options.trade_pub, self.application_trade_client) last_trade_id = Trade.get_last_trade_id() trade_list = self.application_trade_client.getLastTrades(last_trade_id) for trade in trade_list: msg = dict() msg['id'] = trade[0] msg['symbol'] = trade[1] msg['side'] = trade[2] msg['price'] = trade[3] msg['size'] = trade[4] msg['buyer_username'] = trade[5] msg['seller_username'] = trade[6] msg['created'] = trade[7] msg['trade_date'] = trade[7][:10] msg['trade_time'] = trade[7][11:] msg['order_id'] = trade[8] msg['counter_order_id'] = trade[9] Trade.create( self.db_session, msg) all_trades = Trade.get_all_trades(self.db_session) for t in all_trades: trade_info = dict() trade_info['price'] = t.price trade_info['size'] = t.size trade_info['trade_date'] = t.created.strftime('%Y-%m-%d') trade_info['trade_time'] = t.created.strftime('%H:%M:%S') self.md_subscriber[ t.symbol ].inst_status.push_trade(trade_info) for symbol, subscriber in self.md_subscriber.iteritems(): subscriber.ready() self.connections = {} self.heart_beat_timer = tornado.ioloop.PeriodicCallback( self.send_heartbeat_to_trade, 30000) self.heart_beat_timer.start()
def __init__(self, opt, instance_name): self.options = opt self.instance_name = instance_name handlers = [ (r'/', WebSocketHandler), (r'/get_deposit(.*)', DepositHandler), (r'/_webhook/verification_form', VerificationWebHookHandler), (r'/_webhook/deposit_receipt', DepositReceiptWebHookHandler), (r'/process_deposit(.*)', ProcessDepositHandler), (r'/api/(?P<version>[^\/]+)/(?P<symbol>[^\/]+)/(?P<resource>[^\/]+)', RestApiHandler) ] settings = dict(cookie_secret='cookie_secret') tornado.web.Application.__init__(self, handlers, **settings) self.allowed_origins = json.loads(self.options.allowed_origins) self.allow_all_origins = self.allowed_origins[0] == '*' input_log_file_handler = logging.handlers.TimedRotatingFileHandler( os.path.expanduser(self.options.gateway_log), when='MIDNIGHT') formatter = logging.Formatter('%(asctime)s - %(message)s') input_log_file_handler.setFormatter(formatter) self.replay_logger = logging.getLogger(self.instance_name) self.replay_logger.setLevel(logging.INFO) self.replay_logger.addHandler(input_log_file_handler) ch = logging.StreamHandler(sys.stdout) ch.setLevel(logging.DEBUG) ch.setFormatter( logging.Formatter( '%(asctime)s - %(name)s - %(levelname)s - %(message)s')) self.replay_logger.addHandler(ch) self.replay_logger.info('START') self.log_start_data() self.update_tor_nodes() from models import Base, db_bootstrap db_engine = self.options.sqlalchemy_engine + ':///' +\ os.path.expanduser(self.options.sqlalchemy_connection_string) engine = create_engine(db_engine, echo=self.options.db_echo) Base.metadata.create_all(engine) self.db_session = scoped_session(sessionmaker(bind=engine)) db_bootstrap(self.db_session) self.zmq_context = zmq.Context() self.trade_in_socket = self.zmq_context.socket(zmq.REQ) self.trade_in_socket.connect(self.options.trade_in) self.application_trade_client = TradeClient(self.zmq_context, self.trade_in_socket) self.application_trade_client.connect() self.security_list = self.application_trade_client.getSecurityList() self.md_subscriber = {} for instrument in self.security_list.get('Instruments'): symbol = instrument['Symbol'] self.md_subscriber[symbol] = MarketDataSubscriber.get(symbol, self) self.md_subscriber[symbol].subscribe(self.zmq_context, self.options.trade_pub, self.application_trade_client) last_trade_id = Trade.get_last_trade_id(self.db_session) trade_list = self.application_trade_client.getLastTrades(last_trade_id) for trade in trade_list: msg = dict() msg['id'] = trade[0] msg['symbol'] = trade[1] msg['side'] = trade[2] msg['price'] = trade[3] msg['size'] = trade[4] msg['buyer_id'] = trade[5] msg['seller_id'] = trade[6] msg['buyer_username'] = trade[7] msg['seller_username'] = trade[8] msg['created'] = trade[9] msg['trade_date'] = trade[9][:10] msg['trade_time'] = trade[9][11:] msg['order_id'] = trade[10] msg['counter_order_id'] = trade[11] Trade.create(self.db_session, msg) all_trades = Trade.get_all_trades(self.db_session) for t in all_trades: trade_info = dict() trade_info['price'] = t.price trade_info['size'] = t.size trade_info['trade_date'] = t.created.strftime('%Y-%m-%d') trade_info['trade_time'] = t.created.strftime('%H:%M:%S') self.md_subscriber[t.symbol].inst_status.push_trade(trade_info) for symbol, subscriber in self.md_subscriber.iteritems(): subscriber.ready() self.connections = {} self.heart_beat_timer = tornado.ioloop.PeriodicCallback( self.send_heartbeat_to_trade, 30000) self.heart_beat_timer.start() self.update_tor_nodes_timer = tornado.ioloop.PeriodicCallback( self.update_tor_nodes, 3600000) self.update_tor_nodes_timer.start()
def __init__(self, opt): handlers = [ (r'/', WebSocketHandler), (r'/get_deposit(.*)', DepositHandler), (r'/_webhook/verification_form', VerificationWebHookHandler), (r'/_webhook/deposit_receipt', DepositReceiptWebHookHandler), (r'/process_deposit(.*)', ProcessDepositHandler), (r'/api/(?P<version>[^\/]+)/(?P<symbol>[^\/]+)/(?P<resource>[^\/]+)', RestApiHandler) ] settings = dict(cookie_secret='cookie_secret') tornado.web.Application.__init__(self, handlers, **settings) self.replay_logger = logging.getLogger("REPLAY") self.replay_logger.setLevel(logging.INFO) self.replay_logger.addHandler(input_log_file_handler) self.replay_logger.info('START') self.log_start_data() from models import ENGINE, db_bootstrap self.db_session = scoped_session(sessionmaker(bind=ENGINE)) db_bootstrap(self.db_session) self.zmq_context = zmq.Context() self.trade_in_socket = self.zmq_context.socket(zmq.REQ) self.trade_in_socket.connect(opt.trade_in) self.application_trade_client = TradeClient(self.zmq_context, self.trade_in_socket) self.application_trade_client.connect() instruments = self.application_trade_client.getSecurityList() self.md_subscriber = {} for instrument in instruments: symbol = instrument['Symbol'] self.md_subscriber[symbol] = MarketDataSubscriber.get(symbol, self) self.md_subscriber[symbol].subscribe(self.zmq_context, options.trade_pub, self.application_trade_client) last_trade_id = Trade.get_last_trade_id() trade_list = self.application_trade_client.getLastTrades(last_trade_id) for trade in trade_list: msg = dict() msg['id'] = trade[0] msg['symbol'] = trade[1] msg['side'] = trade[2] msg['price'] = trade[3] msg['size'] = trade[4] msg['buyer_username'] = trade[5] msg['seller_username'] = trade[6] msg['created'] = trade[7] msg['trade_date'] = trade[7][:10] msg['trade_time'] = trade[7][11:] msg['order_id'] = trade[8] msg['counter_order_id'] = trade[9] Trade.create(self.db_session, msg) all_trades = Trade.get_all_trades(self.db_session) for t in all_trades: trade_info = dict() trade_info['price'] = t.price trade_info['size'] = t.size trade_info['trade_date'] = t.created.strftime('%Y-%m-%d') trade_info['trade_time'] = t.created.strftime('%H:%M:%S') self.md_subscriber[t.symbol].inst_status.push_trade(trade_info) for symbol, subscriber in self.md_subscriber.iteritems(): subscriber.ready() self.connections = {} self.heart_beat_timer = tornado.ioloop.PeriodicCallback( self.send_heartbeat_to_trade, 30000) self.heart_beat_timer.start()