配置好django的celery配置后 不管是win下还是Linux下,先进入python虚拟环境,然后cd 进入DJANGO项目根目录下(manage.py同一级目录),
执行以下命令启动celery worker
--------------------------------------------------------------------------------------------------------
如果你的celery.py(celery配置文件),是单独定义并且放在了setting.py同目录,可以使用下面的方式启动worker:
# 多进程模型
celery -A 项目名 worker --loglevel=info --concurrency=8
# 多线程模型
celery -A 项目名 worker --loglevel=info --concurrency=8 --pool=threads
# 事件驱动模型 (eventlet)
celery -A 项目名 worker --loglevel=info --pool=eventlet
# 事件驱动模型 (gevent)
celery -A 项目名 worker --loglevel=info --pool=gevent
如果你是单独的celery应用,celery配置文件是直接写在某个taks.py里面或者配置文件不在setting.py同目录的话
启动的项目名必须明确指向到celery配置文件所在位置,
比如项目根目录下你单独创建了一个celery_tasks目录,
然后创建了一个单独的一个tasks.py 的并且把celery 的配置也写在了tasks.py里面,
那就要明确指明task.py所在:
celery -A celery_tasks.tasks worker --loglevel=info
这样的启动方式
--------------------------------------------------------------------------------------------------------
参数说明:不同启动方式的效果
默认启动 (celery -A myproject worker --loglevel=info
):
如果你的系统有4个核心,Celery将启动4个工作进程。
每个进程独立运行,可以充分利用多核优势。
适合CPU密集型任务。
指定并发数 (celery -A myproject worker --loglevel=info --concurrency=8
):
固定并发数为8,即使系统只有4个核心。
可能会导致某些核心过载,但可以提高任务吞吐量。
适合任务队列较长的情况。
线程池模型 (celery -A myproject worker --loglevel=info --concurrency=8 --pool=threads
):
在单个进程中启动8个线程。
线程间的切换开销较小,适合IO密集型任务。
对于大量并发的网络请求或数据库操作非常有用。
--------------------------------------------------------------------------------------------------------
多进程模型:适合计算密集型任务,也可以并行处理 I/O 密集型任务。
多线程模型:更适合 I/O 密集型任务,但由于 GIL 的限制,在 CPU 密集型任务上的性能可能不如多进程模型。
事件驱动模型:最适合处理大量的并发连接和 I/O 密集型任务。
通过增加并发进程或线程的数量,你可以确保 Celery 同一时间并发地与多个 CDN 节点服务器通信并执行 SSH 命令。选择合适的并发模型可以根据你的具体需求来优化任务的执行效率。