feat(trigger): add configuration for trigger provider refresh task

This commit is contained in:
Harry 2025-10-20 20:02:06 +08:00
parent 24619e74f6
commit f87f77ce7b
3 changed files with 49 additions and 0 deletions

View File

@ -1020,6 +1020,28 @@ class CeleryScheduleTasksConfig(BaseSettings):
default=0,
)
# Trigger provider refresh (simple version)
ENABLE_TRIGGER_PROVIDER_REFRESH_TASK: bool = Field(
description="Enable trigger provider refresh poller",
default=True,
)
TRIGGER_PROVIDER_REFRESH_INTERVAL: int = Field(
description="Trigger provider refresh poller interval in minutes",
default=1,
)
TRIGGER_PROVIDER_REFRESH_BATCH_SIZE: int = Field(
description="Max trigger subscriptions to process per tick",
default=200,
)
TRIGGER_PROVIDER_CREDENTIAL_THRESHOLD_SECONDS: int = Field(
description="Proactive credential refresh threshold in seconds",
default=180,
)
TRIGGER_PROVIDER_SUBSCRIPTION_THRESHOLD_SECONDS: int = Field(
description="Proactive subscription refresh threshold in seconds",
default=300,
)
class PositionConfig(BaseSettings):
POSITION_PROVIDER_PINS: str = Field(

View File

@ -166,6 +166,12 @@ def init_app(app: DifyApp) -> Celery:
"task": "schedule.workflow_schedule_task.poll_workflow_schedules",
"schedule": timedelta(minutes=dify_config.WORKFLOW_SCHEDULE_POLLER_INTERVAL),
}
if dify_config.ENABLE_TRIGGER_PROVIDER_REFRESH_TASK:
imports.append("schedule.trigger_provider_refresh_task")
beat_schedule["trigger_provider_refresh"] = {
"task": "schedule.trigger_provider_refresh_task.trigger_provider_refresh",
"schedule": timedelta(minutes=dify_config.TRIGGER_PROVIDER_REFRESH_INTERVAL),
}
celery_app.conf.update(beat_schedule=beat_schedule, imports=imports)
return celery_app

View File

@ -0,0 +1,21 @@
import logging
import time
import app
logger = logging.getLogger(__name__)
def _now_ts() -> int:
return int(time.time())
@app.celery.task(queue="trigger_refresh")
def trigger_provider_refresh() -> None:
"""
Simple trigger provider refresh task.
- Scans due trigger subscriptions in small batches
- Refreshes OAuth credentials if needed
- Refreshes subscription metadata if needed
"""
pass