| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- import time
-
- import click
-
- import app
- from extensions.ext_database import db
- from models.account import TenantPluginAutoUpgradeStrategy
- from tasks.process_tenant_plugin_autoupgrade_check_task import process_tenant_plugin_autoupgrade_check_task
-
- AUTO_UPGRADE_MINIMAL_CHECKING_INTERVAL = 15 * 60 # 15 minutes
-
-
- @app.celery.task(queue="plugin")
- def check_upgradable_plugin_task():
- click.echo(click.style("Start check upgradable plugin.", fg="green"))
- start_at = time.perf_counter()
-
- now_seconds_of_day = time.time() % 86400 - 30 # we assume the tz is UTC
- click.echo(click.style("Now seconds of day: {}".format(now_seconds_of_day), fg="green"))
-
- strategies = (
- db.session.query(TenantPluginAutoUpgradeStrategy)
- .filter(
- TenantPluginAutoUpgradeStrategy.upgrade_time_of_day >= now_seconds_of_day,
- TenantPluginAutoUpgradeStrategy.upgrade_time_of_day
- < now_seconds_of_day + AUTO_UPGRADE_MINIMAL_CHECKING_INTERVAL,
- TenantPluginAutoUpgradeStrategy.strategy_setting
- != TenantPluginAutoUpgradeStrategy.StrategySetting.DISABLED,
- )
- .all()
- )
-
- for strategy in strategies:
- process_tenant_plugin_autoupgrade_check_task.delay(
- strategy.tenant_id,
- strategy.strategy_setting,
- strategy.upgrade_time_of_day,
- strategy.upgrade_mode,
- strategy.exclude_plugins,
- strategy.include_plugins,
- )
-
- end_at = time.perf_counter()
- click.echo(
- click.style(
- "Checked upgradable plugin success latency: {}".format(end_at - start_at),
- fg="green",
- )
- )
|