Skip to content

Commit cb09dbe

Browse files
authored
feat: correctly delete applications using Celery workers (langgenius#5787)
1 parent 5692f9b commit cb09dbe

File tree

11 files changed

+158
-60
lines changed

11 files changed

+158
-60
lines changed

.devcontainer/post_create_command.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
cd web && npm install
44

55
echo 'alias start-api="cd /workspaces/dify/api && flask run --host 0.0.0.0 --port=5001 --debug"' >> ~/.bashrc
6-
echo 'alias start-worker="cd /workspaces/dify/api && celery -A app.celery worker -P gevent -c 1 --loglevel INFO -Q dataset,generation,mail,ops_trace"' >> ~/.bashrc
6+
echo 'alias start-worker="cd /workspaces/dify/api && celery -A app.celery worker -P gevent -c 1 --loglevel INFO -Q dataset,generation,mail,ops_trace,app_deletion"' >> ~/.bashrc
77
echo 'alias start-web="cd /workspaces/dify/web && npm run dev"' >> ~/.bashrc
88
echo 'alias start-containers="cd /workspaces/dify/docker && docker-compose -f docker-compose.middleware.yaml -p dify up -d"' >> ~/.bashrc
99

.vscode/launch.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@
4848
"--loglevel",
4949
"info",
5050
"-Q",
51-
"dataset,generation,mail,ops_trace"
51+
"dataset,generation,mail,ops_trace,app_deletion"
5252
]
5353
},
5454
]

api/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@
6666
10. If you need to debug local async processing, please start the worker service.
6767

6868
```bash
69-
poetry run python -m celery -A app.celery worker -P gevent -c 1 --loglevel INFO -Q dataset,generation,mail,ops_trace
69+
poetry run python -m celery -A app.celery worker -P gevent -c 1 --loglevel INFO -Q dataset,generation,mail,ops_trace,app_deletion
7070
```
7171

7272
The started celery app handles the async tasks, e.g. dataset importing and documents indexing.

api/docker/entrypoint.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ fi
99

1010
if [[ "${MODE}" == "worker" ]]; then
1111
celery -A app.celery worker -P ${CELERY_WORKER_CLASS:-gevent} -c ${CELERY_WORKER_AMOUNT:-1} --loglevel INFO \
12-
-Q ${CELERY_QUEUES:-dataset,generation,mail,ops_trace}
12+
-Q ${CELERY_QUEUES:-dataset,generation,mail,ops_trace,app_deletion}
1313
elif [[ "${MODE}" == "beat" ]]; then
1414
celery -A app.celery beat --loglevel INFO
1515
else

api/events/app_event.py

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,6 @@
33
# sender: app
44
app_was_created = signal('app-was-created')
55

6-
# sender: app
7-
app_was_deleted = signal('app-was-deleted')
8-
96
# sender: app, kwargs: app_model_config
107
app_model_config_was_updated = signal('app-model-config-was-updated')
118

api/events/event_handlers/__init__.py

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,7 @@
44
from .create_installed_app_when_app_created import handle
55
from .create_site_record_when_app_created import handle
66
from .deduct_quota_when_messaeg_created import handle
7-
from .delete_installed_app_when_app_deleted import handle
8-
from .delete_site_record_when_app_deleted import handle
97
from .delete_tool_parameters_cache_when_sync_draft_workflow import handle
10-
from .delete_workflow_as_tool_when_app_deleted import handle
118
from .update_app_dataset_join_when_app_model_config_updated import handle
129
from .update_app_dataset_join_when_app_published_workflow_updated import handle
1310
from .update_provider_last_used_at_when_messaeg_created import handle

api/events/event_handlers/delete_installed_app_when_app_deleted.py

Lines changed: 0 additions & 12 deletions
This file was deleted.

api/events/event_handlers/delete_site_record_when_app_deleted.py

Lines changed: 0 additions & 11 deletions
This file was deleted.

api/events/event_handlers/delete_workflow_as_tool_when_app_deleted.py

Lines changed: 0 additions & 14 deletions
This file was deleted.

api/services/app_service.py

Lines changed: 4 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -16,13 +16,14 @@
1616
from core.model_runtime.model_providers.__base.large_language_model import LargeLanguageModel
1717
from core.tools.tool_manager import ToolManager
1818
from core.tools.utils.configuration import ToolParameterConfigurationManager
19-
from events.app_event import app_model_config_was_updated, app_was_created, app_was_deleted
19+
from events.app_event import app_model_config_was_updated, app_was_created
2020
from extensions.ext_database import db
2121
from models.account import Account
2222
from models.model import App, AppMode, AppModelConfig
2323
from models.tools import ApiToolProvider
2424
from services.tag_service import TagService
2525
from services.workflow_service import WorkflowService
26+
from tasks.remove_app_and_related_data_task import remove_app_and_related_data_task
2627

2728

2829
class AppService:
@@ -393,18 +394,8 @@ def delete_app(self, app: App) -> None:
393394
Delete app
394395
:param app: App instance
395396
"""
396-
db.session.delete(app)
397-
db.session.commit()
398-
399-
app_was_deleted.send(app)
400-
401-
# todo async delete related data by event
402-
# app_model_configs, site, api_tokens, installed_apps, recommended_apps BY app
403-
# app_annotation_hit_histories, app_annotation_settings, app_dataset_joins BY app
404-
# workflows, workflow_runs, workflow_node_executions, workflow_app_logs BY app
405-
# conversations, pinned_conversations, messages BY app
406-
# message_feedbacks, message_annotations, message_chains BY message
407-
# message_agent_thoughts, message_files, saved_messages BY message
397+
# Trigger asynchronous deletion of app and related data
398+
remove_app_and_related_data_task.delay(app.id)
408399

409400
def get_app_meta(self, app_model: App) -> dict:
410401
"""

0 commit comments

Comments
 (0)