django中第二种使用celery并后台运行的方法

原创 392阅读 · 时间2019年3月20日 13:50

准备工作和 Django中怎么使用celery? 一样。

*直接开始主题:

配置:

在项目根目录创建 celery.py 文件:
并写入如下内容:

# 将相对路径转换为绝对路径
from __future__ import absolute_import, unicode_literals
from celery import Celery
# 定义了一个Celery的App
app = Celery('tasks',
             # redis://:password@hostname:port/db_number  有密码认证的连接
             broker='redis://127.0.0.1:6379/3',
             # broker='redis://:密码@192.168.2.105:6379/0',
             backend='redis://127.0.0.1:6379/4',  # 用于Celery的返回结果的接收
             include=['celery_demo.task']       # 用于声明Celery要执行的tasks任务的位置
             )
# Optional configuration, see the application user guide.
app.conf.update(
    result_expires=3600,   # Celery结果存在中间件Redis的超时时间[仅针对当前的Celery的App]
)
if __name__ == '__main__':
    app.start()

在要使用的app中,创建task.py文件,写入如下内容:

from __future__ import absolute_import, unicode_literals
from demo import celery
import time

# 要执行的延耗时函数
@celery.app.task
def ys():
    time.sleep(5)

调用

在views.py中调用:

from django.shortcuts import render
from . import task

def wait(request):
        # 调用函数后面必须加.delay
        # ()中可以传入参数。
    task.ys.delay()
    return render(request, 'celery_demo/wait.html', {})

执行

【前台启动不推荐】celery -A demo worker -loglevel=info
【前台启动简写】celery -A demo worker -l info 
【推荐启动,后台启动】 celery multi start w1 -A demo -l info

注意是 demo 项目名


后台命令的重启和停止

后台重启命令: celery multi start w1 -A 项目名 -l info 

后台停止命令: celery multi stop w1 -A 项目名 -l info


后台启动多个celery worker

celery multi start w1 -A CeleryPro -l info
celery multi v4.1.0 (latentcall)
> Starting nodes...
> OK
celery multi start w2 -A CeleryPro -l info 
celery multi v4.1.0 (latentcall)
> Starting nodes...
> OK

重启多个worker

celery multi restart w2 -A CeleryPro -l info

就重启了上面两个worker


停止多个worker

celery multi stop w2 -A CeleryPro -l info

就停止了上面两个worker


查看当前还有多少个Celery的worker

ps -ef|grep celery



有什么不太懂的可以参考:http://www.manbanzhen.top/?p=137

参考链接:https://www.cnblogs.com/ftl1012/p/9457609.html



评论

本站升级中... 如有好的建议请加入QQ群!

相关文章推荐 ?
近七日热文推荐 !
回到顶部