Skip to content

Commit 49220b2

Browse files
committed
fix: prevent greenlet_spawn error
1 parent 7dacef9 commit 49220b2

File tree

2 files changed

+9
-8
lines changed

2 files changed

+9
-8
lines changed

app/db/crud/user.py

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
)
2626
from app.models.proxy import ProxyTable
2727
from app.models.stats import Period, UserUsageStat, UserUsageStatsList
28-
from app.models.user import UserCreate, UserModify
28+
from app.models.user import UserCreate, UserModify, UserNotificationResponse
2929
from config import USERS_AUTODELETE_DAYS
3030

3131
from .general import _build_trunc_expression, build_json_proxy_settings_search_condition
@@ -778,7 +778,7 @@ async def get_user_sub_update_list(
778778
return result, count
779779

780780

781-
async def autodelete_expired_users(db: AsyncSession, include_limited_users: bool = False) -> List[User]:
781+
async def autodelete_expired_users(db: AsyncSession, include_limited_users: bool = False) -> list[UserNotificationResponse]:
782782
"""
783783
Deletes expired (optionally also limited) users whose auto-delete time has passed.
784784
@@ -788,7 +788,7 @@ async def autodelete_expired_users(db: AsyncSession, include_limited_users: bool
788788
Defaults to False.
789789
790790
Returns:
791-
list[User]: List of deleted users.
791+
list[UserNotificationResponse]: List of deleted users.
792792
"""
793793
target_status = [UserStatus.expired] if not include_limited_users else [UserStatus.expired, UserStatus.limited]
794794

@@ -813,10 +813,14 @@ async def autodelete_expired_users(db: AsyncSession, include_limited_users: bool
813813
<= datetime.now(timezone.utc)
814814
]
815815

816+
result: list[UserNotificationResponse] = []
816817
if expired_users:
818+
for user in expired_users:
819+
result.append(UserNotificationResponse.model_validate(user))
820+
817821
await remove_users(db, expired_users)
818822

819-
return expired_users
823+
return result
820824

821825

822826
async def get_all_users_usages(

app/jobs/remove_expired_users.py

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
from app import scheduler
44
from app.db import GetDB
55
from app.db.crud.user import autodelete_expired_users
6-
from app.models.user import UserNotificationResponse
76
from app import notification
87
from app.jobs.dependencies import SYSTEM_ADMIN
98
from app.utils.logger import get_logger
@@ -18,9 +17,7 @@ async def remove_expired_users():
1817
deleted_users = await autodelete_expired_users(db, USER_AUTODELETE_INCLUDE_LIMITED_ACCOUNTS)
1918

2019
for user in deleted_users:
21-
asyncio.create_task(
22-
notification.remove_user(user=UserNotificationResponse.model_validate(user), by=SYSTEM_ADMIN)
23-
)
20+
asyncio.create_task(notification.remove_user(user=user, by=SYSTEM_ADMIN))
2421
logger.info("Expired user %s deleted.")
2522

2623

0 commit comments

Comments
 (0)