Spaces:
Sleeping
Sleeping
| import logging | |
| import os | |
| gunicorn_logger = logging.getLogger("gunicorn.error") | |
| def clear_pid_from_worker_cfg_db(worker): | |
| worker_cfg_db = os.environ["WORKER_CFG_DB"] | |
| cfg_db_lines = [] | |
| with open(worker_cfg_db) as db_rp: | |
| assigned = False | |
| for line in db_rp: | |
| pid, idx, gid, uid = map(int, line.strip().split(",")) | |
| if not assigned and pid == worker.pid: | |
| assigned = True | |
| cfg_db_lines.append(",".join(map(str, (-1, idx, gid, uid)))) | |
| gunicorn_logger.info(f"Remove {gid=} {uid=} from {pid=}") | |
| else: | |
| cfg_db_lines.append(line.strip()) | |
| with open(worker_cfg_db, "w") as db_wp: | |
| for line in cfg_db_lines: | |
| db_wp.write(line + "\n") | |
| def worker_abort(worker): | |
| clear_pid_from_worker_cfg_db(worker) | |
| if not hasattr(worker, "wsgi"): | |
| worker.wsgi = worker.app.wsgi() | |
| if hasattr(worker.wsgi, "config"): | |
| config = worker.wsgi.config | |
| if "execution_engine" in config: | |
| worker.wsgi.logger.info("Stopping execution_engine") | |
| config["execution_engine"].stop() | |
| def worker_exit(server, worker): | |
| worker_abort(worker) | |
| def when_ready(server): | |
| pass | |
| def on_starting(server): | |
| run_gid_start = int(os.environ["RUN_GID"]) | |
| run_uid_start = int(os.environ["RUN_UID"]) | |
| num_workers = int(os.environ["NUM_WORKERS"]) | |
| worker_cfg_db = os.environ["WORKER_CFG_DB"] | |
| with open(worker_cfg_db, "w") as db_wp: | |
| for i in range(num_workers): | |
| db_wp.write(f"-1,{i},{run_gid_start + i},{run_uid_start + i}\n") | |
| gunicorn_logger.info("Init worker cfg db.") | |
| def pre_fork(server, worker): | |
| pass | |
| def post_fork(server, worker): | |
| pass | |
| def post_worker_init(worker): | |
| pass | |