From 31629d2aeba99064c5acfc87b8702f7a31e3ee5d Mon Sep 17 00:00:00 2001 From: GuanMu Date: Tue, 22 Jul 2025 07:43:06 +0000 Subject: [PATCH 1/3] fix: Update the scheduling method for timed tasks, using crontab instead of timedelta to optimize task execution time --- api/extensions/ext_celery.py | 28 +++++++++++++++++----------- 1 file changed, 17 insertions(+), 11 deletions(-) diff --git a/api/extensions/ext_celery.py b/api/extensions/ext_celery.py index 6279b1ad36..b98ef765da 100644 --- a/api/extensions/ext_celery.py +++ b/api/extensions/ext_celery.py @@ -77,23 +77,18 @@ def init_app(app: DifyApp) -> Celery: beat_schedule = { "clean_embedding_cache_task": { "task": "schedule.clean_embedding_cache_task.clean_embedding_cache_task", - "schedule": timedelta(days=day), + "schedule": crontab(minute='0', hour='2', day_of_month=f'*/{day}'), + "options": {"queue": "housekeeping"}, }, "clean_unused_datasets_task": { "task": "schedule.clean_unused_datasets_task.clean_unused_datasets_task", - "schedule": timedelta(days=day), - }, - "create_tidb_serverless_task": { - "task": "schedule.create_tidb_serverless_task.create_tidb_serverless_task", - "schedule": crontab(minute="0", hour="*"), - }, - "update_tidb_serverless_status_task": { - "task": "schedule.update_tidb_serverless_status_task.update_tidb_serverless_status_task", - "schedule": timedelta(minutes=10), + "schedule": crontab(minute='0', hour='3', day_of_month=f'*/{day}'), + "options": {"queue": "housekeeping"}, }, "clean_messages": { "task": "schedule.clean_messages.clean_messages", - "schedule": timedelta(days=day), + "schedule": crontab(minute='0', hour='4', day_of_month=f'*/{day}'), + "options": {"queue": "housekeeping"}, }, # every Monday "mail_clean_document_notify_task": { @@ -107,6 +102,17 @@ def init_app(app: DifyApp) -> Celery: ), }, } + + if dify_config.CREATE_TIDB_SERVICE_JOB_ENABLED: + beat_schedule["create_tidb_serverless_task"] = { + "task": "schedule.create_tidb_serverless_task.create_tidb_serverless_task", + "schedule": crontab(minute="0", hour="*"), + } + beat_schedule["update_tidb_serverless_status_task"] = { + "task": "schedule.update_tidb_serverless_status_task.update_tidb_serverless_status_task", + "schedule": timedelta(minutes=10), + } + celery_app.conf.update(beat_schedule=beat_schedule, imports=imports) return celery_app From f23eb33be3c99c7ed4be1c0a3040f59d0e2106a7 Mon Sep 17 00:00:00 2001 From: GuanMu Date: Tue, 22 Jul 2025 07:44:33 +0000 Subject: [PATCH 2/3] revert --- api/extensions/ext_celery.py | 22 ++++++++-------------- 1 file changed, 8 insertions(+), 14 deletions(-) diff --git a/api/extensions/ext_celery.py b/api/extensions/ext_celery.py index b98ef765da..434641caaf 100644 --- a/api/extensions/ext_celery.py +++ b/api/extensions/ext_celery.py @@ -78,17 +78,22 @@ def init_app(app: DifyApp) -> Celery: "clean_embedding_cache_task": { "task": "schedule.clean_embedding_cache_task.clean_embedding_cache_task", "schedule": crontab(minute='0', hour='2', day_of_month=f'*/{day}'), - "options": {"queue": "housekeeping"}, }, "clean_unused_datasets_task": { "task": "schedule.clean_unused_datasets_task.clean_unused_datasets_task", "schedule": crontab(minute='0', hour='3', day_of_month=f'*/{day}'), - "options": {"queue": "housekeeping"}, + }, + "create_tidb_serverless_task": { + "task": "schedule.create_tidb_serverless_task.create_tidb_serverless_task", + "schedule": crontab(minute="0", hour="*"), + }, + "update_tidb_serverless_status_task": { + "task": "schedule.update_tidb_serverless_status_task.update_tidb_serverless_status_task", + "schedule": timedelta(minutes=10), }, "clean_messages": { "task": "schedule.clean_messages.clean_messages", "schedule": crontab(minute='0', hour='4', day_of_month=f'*/{day}'), - "options": {"queue": "housekeeping"}, }, # every Monday "mail_clean_document_notify_task": { @@ -102,17 +107,6 @@ def init_app(app: DifyApp) -> Celery: ), }, } - - if dify_config.CREATE_TIDB_SERVICE_JOB_ENABLED: - beat_schedule["create_tidb_serverless_task"] = { - "task": "schedule.create_tidb_serverless_task.create_tidb_serverless_task", - "schedule": crontab(minute="0", hour="*"), - } - beat_schedule["update_tidb_serverless_status_task"] = { - "task": "schedule.update_tidb_serverless_status_task.update_tidb_serverless_status_task", - "schedule": timedelta(minutes=10), - } - celery_app.conf.update(beat_schedule=beat_schedule, imports=imports) return celery_app From 57004a348f4fae18bfde980b54453c634e7b494b Mon Sep 17 00:00:00 2001 From: GuanMu Date: Tue, 22 Jul 2025 07:46:35 +0000 Subject: [PATCH 3/3] fix: unify the scheduled task format, use double quotes to replace single quotes for consistency --- api/extensions/ext_celery.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/api/extensions/ext_celery.py b/api/extensions/ext_celery.py index 434641caaf..745f755107 100644 --- a/api/extensions/ext_celery.py +++ b/api/extensions/ext_celery.py @@ -77,11 +77,11 @@ def init_app(app: DifyApp) -> Celery: beat_schedule = { "clean_embedding_cache_task": { "task": "schedule.clean_embedding_cache_task.clean_embedding_cache_task", - "schedule": crontab(minute='0', hour='2', day_of_month=f'*/{day}'), + "schedule": crontab(minute="0", hour="2", day_of_month=f"*/{day}"), }, "clean_unused_datasets_task": { "task": "schedule.clean_unused_datasets_task.clean_unused_datasets_task", - "schedule": crontab(minute='0', hour='3', day_of_month=f'*/{day}'), + "schedule": crontab(minute="0", hour="3", day_of_month=f"*/{day}"), }, "create_tidb_serverless_task": { "task": "schedule.create_tidb_serverless_task.create_tidb_serverless_task", @@ -93,7 +93,7 @@ def init_app(app: DifyApp) -> Celery: }, "clean_messages": { "task": "schedule.clean_messages.clean_messages", - "schedule": crontab(minute='0', hour='4', day_of_month=f'*/{day}'), + "schedule": crontab(minute="0", hour="4", day_of_month=f"*/{day}"), }, # every Monday "mail_clean_document_notify_task": {