|
1 | 1 | import asyncio |
| 2 | +import gc |
2 | 3 | import hashlib |
3 | 4 | import hmac |
4 | 5 | import json |
@@ -228,25 +229,27 @@ def get_count(date_to_delete_before: datetime) -> int: |
228 | 229 |
|
229 | 230 | @celery_app.task |
230 | 231 | def _delete_old_logs_job(): |
231 | | - with logfire.span('Started to delete old logs'): |
232 | | - with Session(engine) as db: |
233 | | - # Get all logs older than 15 days |
234 | | - date_to_delete_before = datetime.now(UTC) - timedelta(days=15) |
235 | | - with logfire.span( |
236 | | - 'Deleting webhooks for {date_to_delete_before=}', date_to_delete_before=date_to_delete_before |
237 | | - ): |
238 | | - count = get_count(date_to_delete_before) |
239 | | - delete_limit = 4999 |
240 | | - while count > 0: |
241 | | - app_logger.info(f'Deleting {count} logs') |
242 | | - deleting_count = min(count, delete_limit) |
243 | | - with logfire.span('Deleting {count=}', count=deleting_count): |
244 | | - logs_to_delete = db.exec( |
245 | | - select(WebhookLog).where(WebhookLog.timestamp < date_to_delete_before).limit(delete_limit) |
246 | | - ).all() |
247 | | - delete_statement = delete(WebhookLog).where(WebhookLog.id.in_(log.id for log in logs_to_delete)) |
248 | | - db.exec(delete_statement) |
249 | | - db.commit() |
250 | | - count -= delete_limit |
| 232 | + # with logfire.span('Started to delete old logs'): |
| 233 | + with Session(engine) as db: |
| 234 | + # Get all logs older than 15 days |
| 235 | + date_to_delete_before = datetime.now(UTC) - timedelta(days=15) |
| 236 | + # with logfire.span( |
| 237 | + # 'Deleting webhooks for {date_to_delete_before=}', date_to_delete_before=date_to_delete_before |
| 238 | + # ): |
| 239 | + count = get_count(date_to_delete_before) |
| 240 | + delete_limit = 4999 |
| 241 | + while count > 0: |
| 242 | + app_logger.info(f'Deleting {count} logs') |
| 243 | + logs_to_delete = db.exec( |
| 244 | + select(WebhookLog).where(WebhookLog.timestamp < date_to_delete_before).limit(delete_limit) |
| 245 | + ).all() |
| 246 | + delete_statement = delete(WebhookLog).where(WebhookLog.id.in_(log.id for log in logs_to_delete)) |
| 247 | + db.exec(delete_statement) |
| 248 | + db.commit() |
| 249 | + count -= delete_limit |
| 250 | + |
| 251 | + del logs_to_delete |
| 252 | + del delete_statement |
| 253 | + gc.collect() |
251 | 254 |
|
252 | 255 | cache.delete(DELETE_JOBS_KEY) |
0 commit comments