安装

  1. 安装celery包
  2. 选一个broker,这里我选rabbitmq
  3. 选一个backend,这里我选redis
    1. python环境下需要安装redis包

插件

flower可以实时监控celery状态

配置

1
2
3
poetry add celery
docker run -d -p 5672:5672 rabbitmq
docker run -d -p 6379:6379 redis

配置文件celeryconfig.py

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
broker_url = 'pyamqp://guest:guest@localhost'
result_backend = 'rpc://'

task_serializer = 'json'
result_serializer = 'json'
accept_content = ['json']
timezone = 'Europe/Oslo'
enable_utc = True

task_routes = {
    'task.add': 'low-priority',
}

task_annotations = {
    'task.add': {'rate_limit': '10/m'}
}

启动

  • 仅启动worker
    • celery -A module_name.celery_app_name worker --loglevel=INFO
  • 仅仅启动beat(用来跑定时任务)
    • celery -A module_name.celery_app beat -s celerybeat-schedule

关闭

  1. ctrl + C
  2. ps auxww | grep 'celery' | awk '{print $2}' | xargs kill -9
  3. 使用celery multi命令

查看运行状态

  1. 查看有多少任务正在运行
    • celery -A app_name inspect active
  2. 查看有多少任务接收了但还未运行
    • celery -A app_name inspect reserved
  3. 查看worker状态
    • celery -A tasks status

redis中查询结果:

进入redis-cli, 使用get命令,key的格式为celery-task-meta-task_id.
例如:get celery-task-meta-590eb28a-7f77-4a60-a91a-4b1310675b98