Island: Run AWS services on separate threads

AWS related services call AWS metadata service which might take a long time to timeout, that's why they are ran on a separate thread
This commit is contained in:
vakarisz 2022-04-27 18:18:48 +03:00
parent 0e1ffb4051
commit d3c1ff89e9
2 changed files with 6 additions and 3 deletions

View File

@ -1,6 +1,7 @@
import os import os
import uuid import uuid
from datetime import timedelta from datetime import timedelta
from threading import Thread
from typing import Type from typing import Type
import flask_restful import flask_restful
@ -104,8 +105,8 @@ def init_app_services(app):
database.init() database.init()
# If running on AWS, this will initialize the instance data, which is used "later" in the # If running on AWS, this will initialize the instance data, which is used "later" in the
# execution of the island. # execution of the island. Run on a daemon thread since it's slow.
RemoteRunAwsService.init() Thread(target=RemoteRunAwsService.init, name="AWS check thread", daemon=True).start()
def init_app_url_rules(app): def init_app_url_rules(app):

View File

@ -3,6 +3,7 @@ import json
import logging import logging
import sys import sys
from pathlib import Path from pathlib import Path
from threading import Thread
import gevent.hub import gevent.hub
from gevent.pywsgi import WSGIServer from gevent.pywsgi import WSGIServer
@ -131,7 +132,8 @@ def _configure_gevent_exception_handling(data_dir):
def _start_island_server( def _start_island_server(
should_setup_only: bool, config_options: IslandConfigOptions, container: DIContainer should_setup_only: bool, config_options: IslandConfigOptions, container: DIContainer
): ):
populate_exporter_list() # AWS exporter takes a long time to load
Thread(target=populate_exporter_list, name="Report exporter list", daemon=True).start()
app = init_app(mongo_setup.MONGO_URL, container) app = init_app(mongo_setup.MONGO_URL, container)
if should_setup_only: if should_setup_only: