def startup(): """Startup Miro. This method starts up the eventloop and schedules the rest of the startup to run in the event loop. Frontends should call this method, then wait for 1 of 2 messages StartupSuccess is sent once the startup is done and the backend is ready to go. StartupFailure is sent if something bad happened. initialize() must be called before startup(). """ logging.info("Starting up %s", app.config.get(prefs.LONG_APP_NAME)) logging.info("Version: %s", app.config.get(prefs.APP_VERSION)) logging.info("Revision: %s", app.config.get(prefs.APP_REVISION)) logging.info("Builder: %s", app.config.get(prefs.BUILD_MACHINE)) logging.info("Build Time: %s", app.config.get(prefs.BUILD_TIME)) logging.info("Debugmode: %s", app.debugmode) eventloop.connect('thread-started', startup_for_frontend) logging.info("Reading HTTP Password list") httpauth.init() httpauth.restore_from_file() logging.info("Starting libCURL thread") httpclient.init_libcurl() httpclient.start_thread() logging.info("Starting event loop thread") eventloop.startup() if DEBUG_DB_MEM_USAGE: mem_usage_test_event.wait() load_extensions()
def startup(): """Startup Miro. This method starts up the eventloop and schedules the rest of the startup to run in the event loop. Frontends should call this method, then wait for 1 of 2 messages StartupSuccess is sent once the startup is done and the backend is ready to go. StartupFailure is sent if something bad happened. initialize() must be called before startup(). """ logging.info("Starting up %s", app.config.get(prefs.LONG_APP_NAME)) logging.info("Version: %s", app.config.get(prefs.APP_VERSION)) logging.info("Revision: %s", app.config.get(prefs.APP_REVISION)) logging.info("Builder: %s", app.config.get(prefs.BUILD_MACHINE)) logging.info("Build Time: %s", app.config.get(prefs.BUILD_TIME)) logging.info("Debugmode: %s", app.debugmode) eventloop.connect('thread-started', finish_startup) logging.info("Reading HTTP Password list") httpauth.init() httpauth.restore_from_file() logging.info("Starting libCURL thread") httpclient.init_libcurl() httpclient.start_thread() logging.info("Starting event loop thread") eventloop.startup() if DEBUG_DB_MEM_USAGE: mem_usage_test_event.wait() load_extensions()
def _uses_httpclient(*args, **kwargs): # if there's already a curl_manager, then this is probably # being called in a nested context, so this iteration is not # in charge of starting and stopping the httpclient if httpclient.curl_manager: return fun(*args, **kwargs) httpclient.start_thread() try: return fun(*args, **kwargs) finally: httpclient.stop_thread()
def launch(): # Make all output flush immediately. # Don't add extra import statements here. If there's a problem importing # something we want to see the error in the log. import logging import sys import os from miro import util sys.stdout = util.AutoFlushingStream(sys.stdout) sys.stderr = sys.stdout override_modules() from miro.plat.utils import setup_logging, initialize_locale setup_logging(in_downloader=True) util.setup_logging() initialize_locale() if os.environ.get('DEMOCRACY_DOWNLOADER_FIRST_LAUNCH') != '1': logging.info("Starting new downloader log") else: logging.info("Launching Downloader Daemon") log_versions() # Start of normal imports import threading from miro.dl_daemon import daemon from miro import httpclient addr = os.environ['DEMOCRACY_DOWNLOADER_ADDR'] port = int(os.environ['DEMOCRACY_DOWNLOADER_PORT']) short_app_name = os.environ['DEMOCRACY_SHORT_APP_NAME'] httpclient.start_thread() server = daemon.DownloaderDaemon(addr, port, short_app_name) # setup config for the downloader from miro import eventloop config.load(config.DownloaderConfig()) app.downloader_config_watcher = config.ConfigWatcher( lambda foo, *args: eventloop.add_idle(foo, "config watcher", args=args)) # start things up eventloop.startup()
def launch(): # Make all output flush immediately. # Don't add extra import statements here. If there's a problem importing # something we want to see the error in the log. from miro import util sys.stdout = util.AutoFlushingStream(sys.stdout) sys.stderr = sys.stdout override_modules() from miro.plat.utils import setup_logging, initialize_locale setup_logging(in_downloader=True) util.setup_logging() initialize_locale() if os.environ.get('DEMOCRACY_DOWNLOADER_FIRST_LAUNCH') != '1': logging.info("Starting new downloader log") else: logging.info("Launching Downloader Daemon") log_versions() # Start of normal imports from miro.dl_daemon import daemon from miro import httpclient addr = os.environ['DEMOCRACY_DOWNLOADER_ADDR'] port = int(os.environ['DEMOCRACY_DOWNLOADER_PORT']) short_app_name = os.environ['DEMOCRACY_SHORT_APP_NAME'] httpclient.start_thread() daemon.DownloaderDaemon(addr, port, short_app_name) # setup config for the downloader from miro import eventloop config.load(config.ManualConfig()) app.downloader_config_watcher = config.ConfigWatcher( lambda foo, *args: eventloop.add_idle(foo, "config watcher", args=args )) # start things up eventloop.startup()