From e2d53773ce91ba7ead20a63c8dfa01e3a4a11e0d Mon Sep 17 00:00:00 2001 From: FrantiĊĦek Zatloukal Date: Aug 06 2020 07:46:27 +0000 Subject: Allow to configure separate sync times for static and dynamic user data (bugs, prs, versions) --- diff --git a/conf/settings.py.example b/conf/settings.py.example index a7712e3..098865e 100644 --- a/conf/settings.py.example +++ b/conf/settings.py.example @@ -63,12 +63,18 @@ SYNC_INTERVALS = defaultdict(lambda: 3600) # Default sync interval # koschei_data # landing_page # orphans_json -# packager_dashboard_user_data +# packager_dashboard_static_user_data +# packager_dashboard_package_bugs +# packager_dashboard_package_prs +# packager_dashboard_package_versions # packages_owners_json # pagure_groups SYNC_INTERVALS["heart_beat"] = 10 SYNC_INTERVALS["pagure_groups"] = 7200 -SYNC_INTERVALS["packager_dashboard_user_data"] = 7200 +SYNC_INTERVALS["packager_dashboard_static_user_data"] = 3600 +SYNC_INTERVALS["packager_dashboard_package_bugs"] = 7200 +SYNC_INTERVALS["packager_dashboard_package_prs"] = 7200 +SYNC_INTERVALS["packager_dashboard_package_versions"] = 7200 # Specify time (seconds) after which are tasks considered to be in "rotting state" TASKS_ROT_AFTER = 7200 diff --git a/oraculum/config.py b/oraculum/config.py index 435c04c..9736f65 100644 --- a/oraculum/config.py +++ b/oraculum/config.py @@ -91,12 +91,18 @@ class Config(object): # koschei_data # landing_page # orphans_json - # packager_dashboard_user_data + # packager_dashboard_static_user_data + # packager_dashboard_package_bugs + # packager_dashboard_package_prs + # packager_dashboard_package_versions # packages_owners_json # pagure_groups SYNC_INTERVALS['heart_beat'] = 10 SYNC_INTERVALS["pagure_groups"] = 7200 - SYNC_INTERVALS["packager_dashboard_user_data"] = 7200 + SYNC_INTERVALS["packager_dashboard_static_user_data"] = 3600 + SYNC_INTERVALS["packager_dashboard_package_bugs"] = 7200 + SYNC_INTERVALS["packager_dashboard_package_prs"] = 7200 + SYNC_INTERVALS["packager_dashboard_package_versions"] = 7200 # Specify time (seconds) after which are tasks considered to be in "rotting state" TASKS_ROT_AFTER = 7200 diff --git a/oraculum/utils/celery_utils.py b/oraculum/utils/celery_utils.py index 073803f..05fdda7 100644 --- a/oraculum/utils/celery_utils.py +++ b/oraculum/utils/celery_utils.py @@ -106,8 +106,17 @@ def setup_periodic_tasks(sender, **kwargs): # Packager Dashboard - Sync data for users who meet criteria for cached access to the site app.logger.debug("Adding periodic task packager_dashboard_user_data every %s seconds" % - SYNC_INTERVALS["packager_dashboard_user_data"]) - sender.add_periodic_task(SYNC_INTERVALS["packager_dashboard_user_data"], celery_sync_user_data.s(), priority=2) + SYNC_INTERVALS["packager_dashboard_static_user_data"]) + sender.add_periodic_task(SYNC_INTERVALS["packager_dashboard_static_user_data"], celery_sync_static_user_data.s(), priority=2) + app.logger.debug("Adding periodic task to sync package bugs every %s seconds" % + SYNC_INTERVALS["packager_dashboard_package_bugs"]) + sender.add_periodic_task(SYNC_INTERVALS["packager_dashboard_package_bugs"], celery_sync_package_bugs.s(), priority=2) + app.logger.debug("Adding periodic task to sync package prs every %s seconds" % + SYNC_INTERVALS["packager_dashboard_package_prs"]) + sender.add_periodic_task(SYNC_INTERVALS["packager_dashboard_package_prs"], celery_sync_package_prs.s(), priority=2) + app.logger.debug("Adding periodic task to sync package versions every %s seconds" % + SYNC_INTERVALS["packager_dashboard_package_versions"]) + sender.add_periodic_task(SYNC_INTERVALS["packager_dashboard_package_versions"], celery_sync_package_versions.s(), priority=2) @celery_app.task @@ -125,12 +134,31 @@ def get_users_for_sync(): @celery_app.task -def celery_sync_user_data(): +def celery_sync_static_user_data(): + users = get_users_for_sync() + for user in users: + plan_celery_refresh("medium", 'packager-dashboard_user_data_static', user) + +@celery_app.task +def celery_sync_package_bugs(): users = get_users_for_sync() for user in users: data = oraculum.controllers.packager_dashboard.dashboard_user_data_static(user) for package in data["packages"]: - plan_celery_refresh("medium", 'packager-dashboard_user_data_static', user) - plan_celery_refresh("low", 'packager-dashboard_pull_requests', package) plan_celery_refresh("low", 'packager-dashboard_bugs', package) + +@celery_app.task +def celery_sync_package_prs(): + users = get_users_for_sync() + for user in users: + data = oraculum.controllers.packager_dashboard.dashboard_user_data_static(user) + for package in data["packages"]: + plan_celery_refresh("low", 'packager-dashboard_pull_requests', package) + +@celery_app.task +def celery_sync_package_versions(): + users = get_users_for_sync() + for user in users: + data = oraculum.controllers.packager_dashboard.dashboard_user_data_static(user) + for package in data["packages"]: plan_celery_refresh("low", 'packager-dashboard_package_versions', package)