Garbage Collect Autohost subprocesses to accumulate less open file descriptors which may crash the webhost service.

This commit is contained in:
Fabian Dill 2021-02-21 11:07:02 +01:00
parent 8dc2a5748c
commit c0cd79f0d7
1 changed files with 8 additions and 0 deletions

View File

@ -2,6 +2,7 @@ from __future__ import annotations
import logging
import multiprocessing
from datetime import timedelta, datetime
import concurrent.futures
import sys
import typing
import time
@ -136,6 +137,7 @@ def autohost(config: dict):
multiworlds = {}
guardians = concurrent.futures.ThreadPoolExecutor(2, thread_name_prefix="Guardian")
class MultiworldInstance():
def __init__(self, room: Room, config: dict):
@ -153,12 +155,18 @@ class MultiworldInstance():
args=(self.room_id, self.ponyconfig),
name="MultiHost")
self.process.start()
self.guardian = guardians.submit(self._collect)
def stop(self):
if self.process:
self.process.terminate()
self.process = None
def _collect(self):
self.process.join() # wait for process to finish
self.process = None
self.guardian = None
from .models import Room, Generation, STATE_QUEUED, STATE_STARTED, STATE_ERROR, db, Seed
from .customserver import run_server_process