status_checks.py: Properly terminate the process pools (#1795)

* Only spawn a thread pool when strictly needed

For --check-primary-hostname, the pool is not used.
When exiting, the other processes are left alive and will hang.

* Acquire pools with the 'with' statement
This commit is contained in:
David Duque 2020-08-09 16:42:39 +01:00 committed by GitHub
parent 65983b8ac7
commit 94da7bb088
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 6 additions and 6 deletions

View File

@ -437,9 +437,8 @@ def system_status():
self.items[-1]["extra"].append({ "text": message, "monospace": monospace }) self.items[-1]["extra"].append({ "text": message, "monospace": monospace })
output = WebOutput() output = WebOutput()
# Create a temporary pool of processes for the status checks # Create a temporary pool of processes for the status checks
pool = multiprocessing.pool.Pool(processes=5) with multiprocessing.pool.Pool(processes=5) as pool:
run_checks(False, env, output, pool) run_checks(False, env, output, pool)
pool.terminate()
return json_response(output.items) return json_response(output.items)
@app.route('/system/updates') @app.route('/system/updates')

View File

@ -1021,13 +1021,14 @@ if __name__ == "__main__":
from utils import load_environment from utils import load_environment
env = load_environment() env = load_environment()
pool = multiprocessing.pool.Pool(processes=10)
if len(sys.argv) == 1: if len(sys.argv) == 1:
run_checks(False, env, ConsoleOutput(), pool) with multiprocessing.pool.Pool(processes=10) as pool:
run_checks(False, env, ConsoleOutput(), pool)
elif sys.argv[1] == "--show-changes": elif sys.argv[1] == "--show-changes":
run_and_output_changes(env, pool) with multiprocessing.pool.Pool(processes=10) as pool:
run_and_output_changes(env, pool)
elif sys.argv[1] == "--check-primary-hostname": elif sys.argv[1] == "--check-primary-hostname":
# See if the primary hostname appears resolvable and has a signed certificate. # See if the primary hostname appears resolvable and has a signed certificate.