美文网首页
如何快速将celery集成到项目

如何快速将celery集成到项目

作者: luckriver | 来源:发表于2024-03-15 16:17 被阅读0次

因为项目需要,经常需要将 celery 引入工程,因为它不想其他包那样安装后就能使用,所以总结了以下步骤,方便快速接入。

以下基于 celery 4.4 和 django 4.1 版本

  1. 在需要异步任务的工程目录(假设名字叫baseline)下添加 celery.py 文件如下
import os

from celery import Celery

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'settings')

app = Celery('proj')

app.config_from_object('django.conf:settings', namespace='CELERY')

app.autodiscover_tasks()

这一步有几个注意点

  • settings.py 文件需要根据项目的实际情况进行设置
  • celery.py 所在的python包需要加入 Django 的 INSTALLED_APPS, 因为后面要启动单独的进程接收 celery 消息,没有这一步的话会启动失败
  1. 在相同目录下添加 tasks.py,用于编写异步任务
import time

from baseline.celery import app
from baseline.security_manager import run_model_task


@app.task
def test():
    print('this is just a test')

可以看到这里引入的 celery.py 里定义的 app

  1. 配置 settings.py,主要是设置 broker
# 假设BROKER_URL在环境变量中定义
CELERY_BROKER_URL = os.getenv('BROKER_URL')

如果需要 celery beat 进行定时任务,还需要配置

CELERY_BEAT_SCHEDULE = {
    'filter-every-5-minutes': {
        'task': 'baseline.tasks.test',
        'schedule': 5 * 60,
    },
}
  1. 启动 celery woker
[program:celery_worker]
directory=/app/code
user=root
command = celery -A baseline worker -l info -c 2 -Q celery
stdout_logfile = /app/log/celery_worker.log
redirect_stderr = true
autorestart = true

[program:celery_beat]
directory=/app/code
user=root
command = celery -A baseline beat -l info
stdout_logfile = /app/log/celery_beat.log
redirect_stderr = true
autorestart = true

经过以上几个步骤,就可以将 celery 成功接入到工程了。

相关文章

网友评论

      本文标题:如何快速将celery集成到项目

      本文链接:https://www.haomeiwen.com/subject/ciugzdtx.html