在 Linux 系统中,使用 Celery 进行任务调度需要以下几个步骤:
安装 Celery:
使用 pip 安装 Celery:
pip install celery
创建一个 Celery 实例:
在你的项目中创建一个名为
celery.py
的文件,然后创建一个 Celery 实例。例如:from celery import Celery app = Celery('tasks', broker='pyamqp://guest@localhost//') @app.task def add(x, y): return x + y
这里,我们创建了一个名为
add
的任务,它接受两个参数并返回它们的和。配置 Celery:
在项目根目录下创建一个名为
celeryconfig.py
的文件,用于存放 Celery 的配置信息。例如:BROKER_URL = 'pyamqp://guest:guest@localhost:5672/' CELERY_RESULT_BACKEND = 'rpc://' CELERY_TASK_SERIALIZER = 'json' CELERY_RESULT_SERIALIZER = 'json' CELERY_ACCEPT_CONTENT = ['json'] CELERY_TIMEZONE = 'Asia/Shanghai' CELERY_ENABLE_UTC = True
启动 Celery worker:
在终端中,进入到你的项目目录,然后运行以下命令启动 Celery worker:
celery -A celery worker --loglevel=info
-A celery
指定了 Celery 实例的位置,worker
表示启动一个 worker 进程,--loglevel=info
设置日志级别为 info。调用任务:
现在你可以在其他 Python 脚本或交互式解释器中调用 Celery 任务。例如:
from celery import Celery app = Celery('tasks', broker='pyamqp://guest@localhost//') result = app.send_task('tasks.add', args=(4, 4), countdown=10) print(result.get())
这里,我们调用了之前定义的
add
任务,并设置了 10 秒的延迟。result.get()
会等待任务完成并返回结果。设置定时任务:
要设置定时任务,你需要在
celeryconfig.py
文件中添加一个名为CELERYBEAT_SCHEDULE
的字典。例如:CELERYBEAT_SCHEDULE = { 'add-every-30-seconds': { 'task': 'tasks.add', 'schedule': 30.0, 'args': (1, 1) }, }
这里,我们设置了一个每 30 秒执行一次的定时任务,调用
add
任务并传入参数 (1, 1)。启动 Celery beat:
在终端中,进入到你的项目目录,然后运行以下命令启动 Celery beat:
celery -A celery beat --loglevel=info
-A celery
指定了 Celery 实例的位置,beat
表示启动一个 beat 进程,--loglevel=info
设置日志级别为 info。
现在你已经成功设置了 Celery 任务调度。你可以根据需要添加更多的任务和定时任务。