celery 升级容灾移除冗余文件
This commit is contained in:
@@ -1,51 +0,0 @@
|
|||||||
import asyncio
|
|
||||||
from datetime import datetime, timedelta
|
|
||||||
|
|
||||||
from app.tasks.celery_app import celery_app
|
|
||||||
|
|
||||||
|
|
||||||
@celery_app.task
|
|
||||||
def cleanup_expired_video_urls():
|
|
||||||
"""Run hourly. Clear expired video URL tokens."""
|
|
||||||
asyncio.run(_cleanup_urls())
|
|
||||||
|
|
||||||
|
|
||||||
async def _cleanup_urls():
|
|
||||||
from app.models.base import async_session
|
|
||||||
from app.models.generation_record import GenerationRecord
|
|
||||||
from sqlalchemy import update
|
|
||||||
|
|
||||||
async with async_session() as db:
|
|
||||||
now = datetime.now()
|
|
||||||
await db.execute(
|
|
||||||
update(GenerationRecord)
|
|
||||||
.where(
|
|
||||||
GenerationRecord.video_url_expires_at.isnot(None),
|
|
||||||
GenerationRecord.video_url_expires_at < now,
|
|
||||||
GenerationRecord.deleted_at.is_(None),
|
|
||||||
)
|
|
||||||
.values(video_url_expires_at=None)
|
|
||||||
)
|
|
||||||
await db.commit()
|
|
||||||
|
|
||||||
|
|
||||||
@celery_app.task
|
|
||||||
def cleanup_old_notifications():
|
|
||||||
"""Run daily. Delete read notifications older than 30 days."""
|
|
||||||
asyncio.run(_cleanup_notifications())
|
|
||||||
|
|
||||||
|
|
||||||
async def _cleanup_notifications():
|
|
||||||
from app.models.base import async_session
|
|
||||||
from app.models.notification import Notification
|
|
||||||
from sqlalchemy import delete
|
|
||||||
|
|
||||||
async with async_session() as db:
|
|
||||||
cutoff = datetime.now() - timedelta(days=30)
|
|
||||||
await db.execute(
|
|
||||||
delete(Notification).where(
|
|
||||||
Notification.is_read == True,
|
|
||||||
Notification.created_at < cutoff,
|
|
||||||
)
|
|
||||||
)
|
|
||||||
await db.commit()
|
|
||||||
Reference in New Issue
Block a user