|
6 | 6 | from loguru import logger |
7 | 7 | from data_server.database.session import get_sync_session |
8 | 8 | from data_server.schemas.responses import response_success, response_fail |
9 | | -from data_celery.redis_tools.tools import get_celery_server_list |
| 9 | +from data_celery.redis_tools.tools import get_celery_server_list, del_celery_server_list |
10 | 10 | from data_server.database.session import get_celery_worker_redis_db,get_celery_info_details_key |
11 | 11 | from data_celery.utils import get_timestamp |
12 | 12 |
|
@@ -56,3 +56,27 @@ async def get_celery_server_list_api(isadmin: Annotated[bool | None, Header(alia |
56 | 56 | return response_fail(msg="获取Celery服务器列表失败") |
57 | 57 |
|
58 | 58 |
|
| 59 | +@router.delete("/delete_celery_worker/{worker_name}", response_model=dict) |
| 60 | +async def delete_celery_worker_api(worker_name: str, isadmin: Annotated[bool | None, Header(alias="isadmin")] = None): |
| 61 | + try: |
| 62 | + if isadmin is None or isadmin == False: |
| 63 | + return response_fail(msg="Only the admin can delete the Worker") |
| 64 | + |
| 65 | + worker_name = worker_name.strip() |
| 66 | + |
| 67 | + server_list = get_celery_server_list() |
| 68 | + if worker_name not in server_list: |
| 69 | + return response_fail(msg=f"Worker '{worker_name}' it_doesn_t_exist") |
| 70 | + |
| 71 | + del_celery_server_list(worker_name) |
| 72 | + |
| 73 | + celery_redis = get_celery_worker_redis_db() |
| 74 | + celery_info_details_key = get_celery_info_details_key(worker_name) |
| 75 | + celery_redis.delete(celery_info_details_key) |
| 76 | + |
| 77 | + logger.info(f"the_administrator_manually_deletes_the_worker: {worker_name}") |
| 78 | + return response_success(msg=f"successfully_deleted_worker: {worker_name}") |
| 79 | + except Exception as e: |
| 80 | + logger.error(f"delete_celery_worker error: {e}") |
| 81 | + return response_fail(msg=f"failed_to_delete_the_worker: {str(e)}") |
| 82 | + |
0 commit comments