Skip to content
New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

Adicionar celery ao projeto #14

Open
Mdslino opened this issue Jan 22, 2020 · 4 comments
Open

Adicionar celery ao projeto #14

Mdslino opened this issue Jan 22, 2020 · 4 comments

Comments

@Mdslino
Copy link

Mdslino commented Jan 22, 2020

Teria uma forma de adicionar o celery ao projeto e carregar dinamicamente assim como as outras extensões?

@rochacbruno
Copy link
Member

Tem sim e seria uma boa idéia adicionar o Celery e o flask-rq

@Mdslino
Copy link
Author

Mdslino commented Jan 22, 2020

Eu consegui através do flask-celery-helper, vou fazer mais alguns testes se estiver legal abro uma PR

@ThallyssonKlein
Copy link

@Mdslino conseguiu fazer funcionar?

@revton
Copy link

revton commented Mar 16, 2021

Olhando para Flask-Celery-Helper, está descontinuada.
Utilizei um fork dele chamado Flask-Celery-Tools v1.4.1, com Flower v0.9.7 e Celery v4.4.7.
Para coisas simples funcionou bem.
A única coisa que não consegui no momento, foi carregar as variáveis de ambientes no Worker, usando o Dynaconf. Apliquei dentro da task que precisava load_dotenv.
Vou fazer mais alguns testes, caso não consiga, devo abrir uma issue no repositório do Dynaconf.

Atualizando solução

Encontrei essa resposta no StackOverflow que remove a necessidade do Flask-Celery-Helper, implementei desta forma.

celery_extension.py

from celery import Celery
celery = Celery()

queue.py

from celery_extension import celery

def init_app(app: Flask):
    celery.config_from_object(app.config, namespace='CELERY')

Chama o init_app do queue.py usando o Dynaconf dentro do create_app.

run_celery.py

from app import create_app
from celery_extension import celery

app = create_app()

if __name__ == '__main__':
    with app.app_context():
        celery.start()

settings.toml

CELERY_BROKER_URL = "amqp://admin:admin@localhost:5672//"
CELERY_RESULT_BACKEND = "rpc://"

Para subir a o celery

python run_celery.py worker --loglevel=info

# for free to join this conversation on GitHub. Already have an account? # to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants