def main(): logutils.configure_logging() cmd = ["uwsgi"] autoreload = int(config.get("worker_autoreload", "0")) if autoreload > 0: cmd.extend(["--py-autoreload", "{}".format(autoreload)]) serve_results = config.get("worker_serve_results", default=None) if serve_results is not None: for dname in serve_results.split(":"): cmd.extend(["--static-map", "{}={}".format(dname, dname)]) swagger_yaml = Path( config.get("worker_services_dir", default="/code/services"), "swagger.yaml" ) if swagger_yaml.exists(): cmd.extend(["--static-map", "/services/swagger.yaml={}".format(swagger_yaml)]) swagger_ui = Path( config.get("worker_swagger_ui_path", default="/usr/share/nginx/html") ) if swagger_yaml.exists(): cmd.extend(["--static-map", "/docs={}".format(swagger_ui)]) cmd.extend(["--static-index", "index.html"]) try: static_assets = config.get("worker_static_map") except Exception: pass else: cmd.extend(["--static-map", static_assets]) cmd.append( config.get( "worker_uwsgi_config_file", default=str(Path(config.__file__, "..", "uwsgi.ini").resolve()), ) ) os.environ.setdefault( "SERVICELIB_WORKER_NUM_PROCESSES", config.get("worker_num_processes", str(psutil.cpu_count())), ) os.environ.setdefault( "SERVICELIB_WORKER_NUM_THREADS", config.get("worker_num_threads", "1") ) os.environ.setdefault("SERVICELIB_WORKER_PORT", config.get("worker_port", "8000")) log = logutils.get_logger("servicelib-worker") log.info("Running: %s", " ".join(cmd)) os.execlp(cmd[0], *cmd[0:])
def main(): logutils.configure_logging() cmdline_config = cmdline.parse_args( "worker.autoreload", "worker.hostname", "worker.load_workers", "worker.num_processes", "worker.num_threads", "worker.port", "worker.services_dir", ) for k, v in cmdline_config.items(): if isinstance(v, list): v = json.dumps(v) else: v = str(v) os.environ[env_var(k)] = v cmd = ["uwsgi", "--req-logger", "file:/dev/null"] autoreload = int(config.get("worker.autoreload", "0")) if autoreload > 0: cmd.extend(["--py-autoreload", "{}".format(autoreload)]) # pragma: no cover serve_results = config.get("worker.serve_results", default=None) if serve_results is not None: for dname in serve_results.split(":"): cmd.extend(["--static-map", "{}={}".format(dname, dname)]) swagger_yaml = Path( config.get("worker.services_dir", default="/code/services"), "swagger.yaml") if swagger_yaml.exists(): cmd.extend( ["--static-map", "/services/swagger.yaml={}".format(swagger_yaml)]) swagger_ui = Path( config.get("worker.swagger_ui_path", default="/usr/share/nginx/html")) if swagger_yaml.exists(): cmd.extend(["--static-map", "/docs={}".format(swagger_ui)]) cmd.extend(["--static-index", "index.html"]) static_assets = config.get("worker.static_map", default=None) if static_assets is not None: cmd.extend(["--static-map", static_assets]) cmd.append( config.get( "worker.uwsgi_config_file", default=str(Path(logutils.__file__, "..", "uwsgi.ini").resolve()), )) os.environ.setdefault( env_var("worker.num_processes"), config.get("worker.num_processes", str(psutil.cpu_count())), ) os.environ.setdefault(env_var("worker.num_threads"), str(config.get("worker.num_threads", 1))) os.environ.setdefault(env_var("worker.port"), str(config.get("worker.port", 8000))) log = logutils.get_logger("servicelib-worker") log.info("Environment: %s", os.environ) log.info("Running: %s", " ".join(cmd)) # If we're running under `pytest-cov`, call `pytest_cov.embed.cleanup()` # before exec of uWSGI, so that we do not lose coverage info for this # Python module. if os.environ.get("COV_CORE_DATAFILE"): from pytest_cov.embed import cleanup cleanup() os.execlp(cmd[0], *cmd[0:])