2020from renku_data_services .authz .admin_sync import sync_admins_from_keycloak
2121from renku_data_services .base_models .core import APIUser
2222from renku_data_services .data_api .app import register_all_handlers
23- from renku_data_services .data_api .prometheus import setup_app_metrics , setup_prometheus
23+ from renku_data_services .data_api .prometheus import setup_prometheus
2424from renku_data_services .errors .errors import (
2525 ForbiddenError ,
2626 MissingResourceError ,
3636 import sentry_sdk ._types
3737
3838
39- async def _solr_reindex ( app : Sanic ) -> None :
39+ async def solr_reindex ( config : Config ) -> None :
4040 """Run a solr reindex of all data.
4141
4242 This might be required after migrating the solr schema.
4343 """
44- config = Config . from_env ( )
44+ logger . info ( "starting SOLR reindexing." )
4545 reprovision = config .search_reprovisioning
4646 admin = APIUser (is_admin = True )
4747 await reprovision .run_reprovision (admin )
4848
4949
50- def solr_reindex (app_name : str ) -> None :
51- """Runs a solr reindex."""
52- app = Sanic (app_name )
53- setup_app_metrics (app )
54-
55- logger .info ("Running SOLR reindex triggered by a migration" )
56- asyncio .set_event_loop (uvloop .new_event_loop ())
57- asyncio .run (_solr_reindex (app ))
58-
59-
6050def create_app () -> Sanic :
6151 """Create a Sanic application."""
6252 config = Config .from_env ()
@@ -145,15 +135,16 @@ async def do_solr_migrations(app: Sanic) -> None:
145135
146136 @app .before_server_start
147137 async def setup_rclone_validator (app : Sanic ) -> None :
138+ logger .info ("Setting up rclone validator" )
148139 validator = RCloneValidator ()
149140 app .ext .dependency (validator )
150141
151142 @app .main_process_ready
152- async def ready (app : Sanic ) -> None :
153- """Application ready event handler ."""
154- logger . info ( "starting events background job." )
155- if getattr ( app . ctx , "solr_reindex" , False ):
156- app .manager . manage ( "SolrReindex" , solr_reindex , { "app_name" : app . name }, transient = True )
143+ async def do_solr_reindex (app : Sanic ) -> None :
144+ """Reindex solr if needed ."""
145+ if not getattr ( app . ctx , "solr_reindex" , False ):
146+ return
147+ app .add_task ( solr_reindex ( config ), name = "solr_reindex" )
157148
158149 return app
159150
@@ -165,6 +156,7 @@ async def ready(app: Sanic) -> None:
165156 parser .add_argument ("-p" , "--port" , default = 8000 , type = int , help = "Port to listen on" )
166157 parser .add_argument ("--debug" , action = "store_true" , help = "Enable Sanic debug mode" )
167158 parser .add_argument ("--fast" , action = "store_true" , help = "Enable Sanic fast mode" )
159+ parser .add_argument ("--workers" , default = 1 , type = int , help = "The number of workers to use." )
168160 parser .add_argument ("-d" , "--dev" , action = "store_true" , help = "Enable Sanic development mode" )
169161 parser .add_argument ("--single-process" , action = "store_true" , help = "Do not use multiprocessing." )
170162 args : dict [str , Any ] = vars (parser .parse_args ())
0 commit comments