Files
eveAI/common/utils/celery_utils.py
Josako cd5afa0408 Refactoring finished :-)
eveai_workers now working (with errors ;-) )
Remote debugging now available
2024-05-07 22:51:48 +02:00

48 lines
1.7 KiB
Python

from celery import Celery
from kombu import Queue
from werkzeug.local import LocalProxy
celery_app = Celery()
def init_celery(celery, app):
celery_app.main = app.name
celery_config = {
'broker_url': app.config.get('CELERY_BROKER_URL', 'redis://localhost:6379/0'),
'result_backend': app.config.get('CELERY_RESULT_BACKEND', 'redis://localhost:6379/0'),
'task_serializer': app.config.get('CELERY_TASK_SERIALIZER', 'json'),
'result_serializer': app.config.get('CELERY_RESULT_SERIALIZER', 'json'),
'accept_content': app.config.get('CELERY_ACCEPT_CONTENT', ['json']),
'timezone': app.config.get('CELERY_TIMEZONE', 'UTC'),
'enable_utc': app.config.get('CELERY_ENABLE_UTC', True),
'task_routes': {'eveai_worker.tasks.create_embeddings': {'queue': 'embeddings',
'routing_key': 'embeddings.create_embeddings'}},
}
celery_app.conf.update(**celery_config)
# Setting up Celery task queues
celery_app.conf.task_queues = (
Queue('default', routing_key='task.#'),
Queue('embeddings', routing_key='embeddings.#', queue_arguments={'x-max-priority': 10}),
Queue('llm_interactions', routing_key='llm_interactions.#', queue_arguments={'x-max-priority': 5}),
)
# Ensuring tasks execute with Flask application context
class ContextTask(celery.Task):
def __call__(self, *args, **kwargs):
with app.app_context():
return self.run(*args, **kwargs)
celery.Task = ContextTask
def make_celery(app_name, config):
return celery_app
def _get_current_celery():
return celery_app
current_celery = LocalProxy(_get_current_celery)