Skip to content
New issue

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

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

Already on GitHub? Sign in 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

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

No branches or pull requests

4 participants