celery 分布式异步队列框架使用方法

简介:

Celery  是一个python开发的异步分布式任务调度模块,是一个消息传输的中间件,可以理解为一个邮箱,每当应用程序调用celery的异步任务时,会向broker传递消息,然后celery的worker从中取消息

Celery  用于存储消息以及celery执行的一些消息和结果

对于brokers,官方推荐是rabbitmq和redis

对于backend,也就是指数据库,为了简单一般使用redis

分享图片

 

安装:
windows下:

pip install celery
pip install eventlet (运行需要依赖此包)

linux 下:

pip install celery

分享图片

crontab_task,taobaovideo_task 分别是两个任务,

 

main.py

from celery import Celery
import os

#将settings添加到环境中
os.environ[DJANGO_SETTINGS_MODULE] = TaoBaoVideoProject.settings

#注册异步app 参数是你的项目名称
celery_app = Celery(TaoBaoVideoProject)
#导入配置文件
celery_app.config_from_object(celery_tasks.config)
celery_app.autodiscover_tasks([celery_tasks.taobaovideo_task,celery_tasks.crontab_task]) 

# 最下面这行,每加一个任务,在这里注册写入即可,

config.py

broker_url = "redis://127.0.0.1:6379/5"      #redis设置密码的:redis://[email protected]:6379/5
result_backend = "redis://127.0.0.1:6379/6"
timezone = Asia/Shanghai

# 这里注意首先需要把redis数据库安装完成

 

tasks.py中

分享图片

视图函数中这样调用:

分享图片

 

启动命令:

celery -A celery_tasks.main worker -l info -P eventlet

分享图片

这个则代表启动成功,如果实在服务器上运行的话我们需要添加守护进程,命令如下:

celery multi start w1 -A celery_tasks.main -l info --logfile=./celerylog.log

分享图片

 这个则代表运行成功,并在当前文件夹生成日志文件

查询该任务的执行结果:

分享图片

 具体实现细节可参考:https://www.cnblogs.com/cwp-bg/p/8759638.html

 

 

celrey定时任务实现:

tasks.py中:

from celery.task import periodic_task
from utils.crontab_video_method import TaoBaoVideoUpload

@periodic_task(run_every=90)   #90秒执行一次该方法
def crontab_upload_video():
    TaoBaoVideoUpload().detection_video()
    return 定时任务执行成功

命令:

celery multi start w1 -A celery_tasks.main -l info --logfile=./celerylog.log

成功运行结果如下:

分享图片

 

具体方法参考:https://www.cnblogs.com/52forjie/p/9364136.html 

相关文章
相关标签/搜索