繁体   English   中英

如何在 Flask 上启动 Celery Beat

[英]How to start Celery Beat on Flask

我目前有一个看起来像这个app.py的烧瓶代码

from services.celery_maker import make_celery
from flask import Flask
from datetime import timedelta

template_dir = os.path.abspath('./build/')
app = Flask(__name__, template_folder=template_dir, static_folder=os.path.abspath("./build/static"))

app.config['ERROR_404_HELP'] = False
app.config['SECRET_KEY'] = config.get("DEFAULT", "SECRET_KEY")
app.config['PERMANENT_SESSION_LIFETIME'] = timedelta(minutes=5)

app.config.update(
    CELERY_BROKER_URL='redis://127.0.0.1:6379/0',
    CELERY_RESULT_BACKEND='redis://127.0.0.1:6379/0',
)

app.config['CELERYBEAT_SCHEDULE'] = {
    # Executes every minute
    'periodic_task-every-minute': {
        'task': 'periodic_task',
        'schedule': timedelta(seconds=30)
    }
}



@app.route('/')
def view():
    return "Hello, Flask is up and running!"

@celery.task(name ="periodic_task")
def periodic_task():
    print('Hi! from periodic_task')
    logger.info("Hello! from periodic task")

if __name__ == "__main__":
    app.run(debug = True)

我在不同的文件中有我的 celery maker 来阻止相关的导入错误

services.celery_maker.py

from celery import Celery


def make_celery(app_name=__name__):
    backend = "redis://localhost:6379/0"
    broker = backend.replace("0", "1")

    return Celery(app_name, backend=backend, broker=broker)


celery = make_celery()

芹菜工人看到我的任务,但它根本不运行我不知道发生了什么

对于 celery 中的周期性任务,您还需要使用 celery beat,beats 将安排任务,worker 将执行任务,简而言之,您还需要与 worker 一起启动 celery-beat

celery beat -A <path_to_worker_created_under_celery_app> -l info

例如。 在你的情况下celery beat -A services.celery_maker.celery -l info

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM