|
4 | 4 | from uuid import uuid4 |
5 | 5 |
|
6 | 6 | from celery import Celery # type: ignore[import-untyped] |
| 7 | +from celery.exceptions import CeleryError # type: ignore[import-untyped] |
7 | 8 | from common_library.async_tools import make_async |
8 | 9 | from models_library.progress_bar import ProgressReport |
9 | 10 | from servicelib.celery.models import ( |
|
18 | 19 | TaskUUID, |
19 | 20 | ) |
20 | 21 | from servicelib.celery.task_manager import TaskManager |
| 22 | +from servicelib.logging_errors import create_troubleshootting_log_kwargs |
21 | 23 | from servicelib.logging_utils import log_context |
22 | 24 | from settings_library.celery import CelerySettings |
23 | 25 |
|
@@ -56,20 +58,35 @@ async def submit_task( |
56 | 58 | if task_metadata.ephemeral |
57 | 59 | else self._celery_settings.CELERY_RESULT_EXPIRES |
58 | 60 | ) |
59 | | - await self._task_info_store.create_task( |
60 | | - task_id, task_metadata, expiry=expiry |
61 | | - ) |
62 | 61 |
|
63 | 62 | try: |
| 63 | + await self._task_info_store.create_task( |
| 64 | + task_id, task_metadata, expiry=expiry |
| 65 | + ) |
64 | 66 | self._celery_app.send_task( |
65 | 67 | task_metadata.name, |
66 | 68 | task_id=task_id, |
67 | 69 | kwargs={"task_id": task_id} | task_params, |
68 | 70 | queue=task_metadata.queue.value, |
69 | 71 | ) |
70 | | - except Exception: |
71 | | - _logger.exception("Task '%s' submission failed", task_metadata.name) |
72 | | - await self._task_info_store.remove_task(task_id) |
| 72 | + except CeleryError as exc: |
| 73 | + _logger.exception( |
| 74 | + **create_troubleshootting_log_kwargs( |
| 75 | + user_error_msg="Unable to submit task", |
| 76 | + error=exc, |
| 77 | + error_context={ |
| 78 | + "task_id": task_id, |
| 79 | + "task_name": task_metadata.name, |
| 80 | + }, |
| 81 | + ) |
| 82 | + ) |
| 83 | + try: |
| 84 | + await self._task_info_store.remove_task(task_id) |
| 85 | + except CeleryError: |
| 86 | + _logger.warning( |
| 87 | + "Unable to cleanup task '%s' during error handling", |
| 88 | + task_id, |
| 89 | + ) |
73 | 90 | raise |
74 | 91 |
|
75 | 92 | return task_uuid |
|
0 commit comments