12345678910111213141516171819202122232425262728293031 |
- import datetime
- import time
- import click
- from flask import current_app
- from werkzeug.exceptions import NotFound
- import app
- from extensions.ext_database import db
- from models.dataset import Embedding
- @app.celery.task(queue='dataset')
- def clean_embedding_cache_task():
- click.echo(click.style('Start clean embedding cache.', fg='green'))
- clean_days = int(current_app.config.get('CLEAN_DAY_SETTING'))
- start_at = time.perf_counter()
- thirty_days_ago = datetime.datetime.now() - datetime.timedelta(days=clean_days)
- page = 1
- while True:
- try:
- embeddings = db.session.query(Embedding).filter(Embedding.created_at < thirty_days_ago) \
- .order_by(Embedding.created_at.desc()).paginate(page=page, per_page=100)
- except NotFound:
- break
- for embedding in embeddings:
- db.session.delete(embedding)
- db.session.commit()
- page += 1
- end_at = time.perf_counter()
- click.echo(click.style('Cleaned embedding cache from db success latency: {}'.format(end_at - start_at), fg='green'))
|