def main(): parser = argparse.ArgumentParser( description="Blinktrade Api Receive application") parser.add_argument( '-c', "--config", action="store", dest="config", default=os.path.expanduser('~/.blinktrade/api_receive.ini'), help='Configuration file', type=str) arguments = parser.parse_args() if not arguments.config: parser.print_help() return candidates = [ os.path.join(site_config_dir('blinktrade'), 'api_receive.ini'), arguments.config ] config = ConfigParser.SafeConfigParser() config.read(candidates) # Validate the whole file for section_name in config.sections(): options = ProjectOptions(config, section_name) if not options.log or \ not options.port or \ not options.rpc_url or \ not options.db_engine: raise RuntimeError("Invalid configuration file") # Start all applications applications = [] for section_name in config.sections(): options = ProjectOptions(config, section_name) application = ApiReceiveApplication(options, section_name) application.listen(options.port) applications.append(application) if applications: # start try: tornado.ioloop.IOLoop.instance().start() except KeyboardInterrupt: for application in applications: application.clean_up()
def main(): parser = argparse.ArgumentParser(description="Blinktrade WebSocket Gateway application") parser.add_argument('-i', "--instance", action="store", dest="instance", help='Instance name', type=str) parser.add_argument('-c', "--config", action="store", dest="config", default=os.path.expanduser('~/.blinktrade/bitex.ini'), help='Configuration file', type=str) arguments = parser.parse_args() if not arguments.instance: parser.print_help() return candidates = [ os.path.join(site_config_dir('blinktrade'), 'bitex.ini'), os.path.expanduser('~/.blinktrade/bitex.ini'), arguments.config] config = ConfigParser.SafeConfigParser() config.read( candidates ) options = ProjectOptions(config, arguments.instance) if not options.trade_in or\ not options.trade_pub or\ not options.gateway_log or\ not options.callback_url or\ not options.port or\ not options.allowed_origins or\ not options.sqlalchemy_connection_string or \ not options.sqlalchemy_engine: raise RuntimeError("Invalid configuration file") run_application(options, arguments.instance)
def main(): parser = argparse.ArgumentParser(description="Blinktrade") parser.add_argument('-c', "--config", action="store", dest="config", help='Configuration file', type=str) arguments = parser.parse_args() candidates = [ os.path.join(site_config_dir('blinktrade'), 'bitex.ini'), os.path.expanduser('~/.blinktrade/bitex.ini'), arguments.config ] config = ConfigParser.SafeConfigParser() config.read(candidates) processes = [] for section_name in config.sections(): project_options = ProjectOptions(config, section_name) if section_name[:5] == 'trade': p = multiprocessing.Process(name=section_name, target=partial(trade_instance, section_name, project_options)) elif section_name[:10] == 'ws_gateway': p = multiprocessing.Process(name=section_name, target=partial(ws_gateway_instance, section_name, project_options)) elif section_name[:6] == 'mailer': p = multiprocessing.Process(name=section_name, target=partial(mailer_instance, section_name, project_options)) else: raise RuntimeError("Invalid section name") processes.append(p) # start all sub processes for p in processes: p.daemon = True p.start() # wait for them to finish for p in processes: logging.debug('waiting %s', p.name) p.join()
def main(): parser = argparse.ArgumentParser( description="Blinktrade Trade application") parser.add_argument('-i', "--instance", action="store", dest="instance", help='Instance name', type=str) parser.add_argument('-c', "--config", action="store", dest="config", default=os.path.expanduser('~/.blinktrade/bitex.ini'), help='Configuration file', type=str) arguments = parser.parse_args() if not arguments.instance: parser.print_help() return candidates = [ os.path.join(site_config_dir('blinktrade'), 'bitex.ini'), os.path.expanduser('~/.blinktrade/bitex.ini'), arguments.config ] config = ConfigParser.SafeConfigParser() config.read(candidates) options = ProjectOptions(config, arguments.instance) if not options.trade_in or \ not options.trade_pub or \ not options.trade_log or \ not options.global_email_language or \ not options.sqlalchemy_connection_string or \ not options.sqlalchemy_engine: raise RuntimeError("Invalid configuration file") application = TradeApplication.instance() application.initialize(options, arguments.instance) application.run()
def main(): parser = argparse.ArgumentParser( description="Blinktrade Mailer application") parser.add_argument('-i', "--instance", action="store", dest="instance", help='Instance name', type=str) parser.add_argument('-c', "--config", action="store", dest="config", default=os.path.expanduser('~/.blinktrade/bitex.ini'), help='Configuration file', type=str) arguments = parser.parse_args() if not arguments.instance: parser.print_help() return candidates = [ os.path.join(site_config_dir('blinktrade'), 'bitex.ini'), os.path.expanduser('~/.blinktrade/bitex.ini'), arguments.config ] config = ConfigParser.SafeConfigParser() config.read(candidates) options = ProjectOptions(config, arguments.instance) if not options.mailchimp_apikey or\ not options.mandrill_apikey or\ not options.mailchimp_newsletter_list_id or\ not options.trade_in or\ not options.mailer_username or\ not options.mailer_password or\ not options.trade_pub or \ not options.mailer_log : raise RuntimeError("Invalid configuration file") run_application(options, arguments.instance)