# django_celery_study **Repository Path**: Muzi-Li-Chine/django_celery_study ## Basic Information - **Project Name**: django_celery_study - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-03-11 - **Last Updated**: 2025-03-12 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README 官方文档:https://docs.celeryq.dev/en/stable/userguide/configuration.html # Celery 的架构 - Worker:工作进程,Worker 是实际执行任务的进程,它从消息队列中获取任务并执行。 - Broker:消息队列,Celery 使用消息队列来分发任务。RabbitMQ 和 Redis 是最常用的消息队列,它们负责将任务从生产者传递给消费者(worker) - Task:任务,Celery 的核心,它定义了任务,包括任务的名称、参数和执行逻辑。 - Backend:结果存储,Celery 任务执行后的结果可以存储在支持的后端(如 Redis、数据库等),便于查询任务执行状态或获取结果。 # 安装依赖 ```shell pip install -r requirements.txt ``` # 执行迁移 ```shell python manage.py makemigrations python manage.py migrate ``` # 创建APP ```shell python manage.py startapp study ``` # 创建超级用户 ```shell python manage.py createsuperuser 账号:superuser 密码:admin123456 ``` # 启动项目 ```shell python manage.py runserver localhost:8000 ``` # 访问后台 ```shell http://127.0.0.1:8000/admin/ ``` celery 启动 ```shell mac/linux: celery -A application.celery worker -B --loglevel=info win: 需要安装: pip install eventlet,需要启动两个程序(worker + beat 顺序不分先后) # 启动Worker celery -A application.celery worker -P eventlet --loglevel=info # 启动Beat celery -A application.celery beat --loglevel=info 监听celery 需要安装 pip install flower 方式一: celery -A application.celery flower --port=5555 --address=0.0.0.0 方式二: celery --broker=redis://127.0.0.1:6379/4 flower ``` ```shell celery -A application.celery worker -n celery.%h -Q celery -P eventlet --concurrency=4 --loglevel=info celery -A application.celery worker -n worker1.%h -Q worker1 -P eventlet --loglevel=info celery -A application.celery worker -n worker2.%h -Q worker2 -P eventlet --loglevel=info ``` - `-A`:指定`celery`配置文件 - `-n`:指定新`worker`的名称 - `%h`:表示运行`worker`的包含域名的完整主机名称,除了`%h`外还可以用`%n`来表示主机名,或是`%d`表示`domain`域名。 - `-Q`:指定队列名字, - `-P`:指定`worker`的运行模式,`eventlet`是异步模式,`gevent`是同步模式,默认是`solo`模式,`solo`模式下,`worker`运行在一个线程中,不会出现多进程并发的问题,但是性能会比较低。 - `--concurrency`:控制不同队列消费的进程数量 - `--loglevel`:指定`worker`的日志级别,默认是`info`级别,可以设置为`debug`、`info`、`warning`、`error`、`critical`等