跳至主要内容

Django 配置 Celery

Django+celery

Django 配置 Celery

celery介绍

Celery Beat 定时任务

异步任务通常在业务逻辑中被触发并发往任务队列,而定时任务由 Celery Beat 进程周期性地将任务发往任务队列

Celery Broker 消息中间件

Celery本身不提供消息服务,但是可以方便的和第三方提供的消息中间件集成。包括RabbitMQ、 Redis等

Celery Worker 任务执行单元

Worker是Celery提供的任务执行的单元,worker并发的运行在分布式的系统节点中

Celery Backend 结果存储

Backend用来存储Worker执行的任务的结果,Celery支持以不同方式存储任务的结果,包括mongodb、redis等

定时任务和异步任务会发送给消息中间件

发送
发送
Async Task异步任务
消息中间件Celery Broker
Celery Beat定时任务

Celery Worker 会监控中间件消息

监控
监控
监控
消息中间件Celery Broker
Celery Worker
Celery Worker
Celery Worker

Celery Worker 会把执行结果存储到 Backend

存储
存储
存储
结果存储Backend
Celery Worker
Celery Worker
Celery Worker

安装celery

配置Django

Borker 和Backend 都使用redis,可以根据实际进行修改

application目录下创建tasks.py 用于定义任务

project目录下创建celery.py

project目录下修改__init__.py

tasks.py

 

celery.py

__init__.py

 

启动celery

启动woker,目前只支持异步任务

启动 Beat 定时任务调度器

二合一启动方式,同时支持异步和定时任务

 

备注

由于celery时区默认使用UTC,所以定时任务使用crontab模式时,会出现异常问题

如果非必须指定日期定时任务,建议使用timedelta模式做定时任务

 

评论

此博客中的热门博文

Django使用markdown

Django使用markdown 安装markdown Pygments xxxxxxxxxx pip install Pygments markdown 生成css文件 xxxxxxxxxx pygmentize -S default -f html -a .codehilite > pygments.css -S 选择高亮模板,查看支持的高亮模板 xxxxxxxxxx from pygments . styles import STYLE_MAP STYLE_MAP . keys () 在对应APP添加 templatetags文件夹 custom_markdown.py xxxxxxxxxx import markdown from django import template from django . template . defaultfilters import stringfilter from django . utils . safestring import mark_safe register = template . Library () #自定义filter时必须加上 @register . filter ( is_safe = True ) #注册template filter @stringfilter       #希望字符串作为参数 def custom_markdown ( value ):     return mark_safe ( markdown . markdown ( value ,         extensions =[ 'markdown.extensions.fenced_code' , 'markdown.extensions.codehilite' ],         safe_mode = True ,         enable_attributes = False )) 模板中引用 xxxxxxxxxx {% load custom_markdown %...

web管理openvpn

  web管理openvpn 一部署目标 客户端使用openvpn客户端使用证书密钥+用户密码验证登录,拨入内网 服务器端使用mysql存储用户信息,并加密用户密码 开发openvpn管理平台,可以web界面管理openvpn 指定人员IP,通过策略限制人员访问资源 二部署openvpn 1安装openvpn服务端 1.1环境 系统 centos7.3 IP地址 100.100.100.100 Openvpn版本 2.4.3 安装方式 YUM 数据库 percona-server-5.7.18-15 验证工具 pam_mysql openvpn插件版本 2.0.9 1.2安装依赖 yum -y install epel-release yum install pam-devel pam yum install -y easy-rsa yum -y install mariadb-server mariadb-devel mariadb-libs yum install -y cyrus-sasl cyrus-sasl-plain cyrus-sasl-devel cyrus-sasl-lib cyrus-sasl-gssapi 1.3安装openvpn 使用yum命令安装openvpn yum install -y openvpn 1.4配置证书密钥 复制证书密钥工具 #cp -R /usr/share/easy-rsa /etc/openvpn/ 进入工具目录 #cd /etc/openvpn/easy-rsa 修改证书生成信息 #vim /etc/openvpn/easy-rsa/2.0/vars export KEY_COUNTRY="CN" export KEY_PROVINCE="CA" export KEY_CITY="HangZhou" export KEY_ORG="xxx" export KEY_EMAIL="server_monitor@xxx.com" export KEY_OU="YunWei 重新加载 #source ./vars 重新产生CA证书 ./clean-all ./build-ca 创建服务端证书 ./build-key...

Django部署

Django部署   uwsgi配置 官方文档 : uwsgi-docs 选项 描述 chdir the base directory (full path) module Django's wsgi file master 启动管理主进程 processes 启动的进程数 threads 每个进程的线程数 uid 启动uwsgi的用户 gid 启动uwsgi的用户组 pidfile 进程号文件 max-requests 最大请求数 vacuum clear environment on exit 服务停止自动清理sock文件和pid文件 daemonize 日志目录 home python虚拟环境路径 socket scoket地址(tcp或者sock文件路径) chmod-socket sock文件权限 http uwsgi监听IP和端口 x [uwsgi] chdir = /opt/Platform module = Platform.wsgi master = True pidfile = /tmp/tzop.pid vacuum = True max-requests = 5000 processes = 8 #socket=/var/run/op_uwsgi.sock # unxi scoket need set chmod-socket #chmod-socket=666 #socket=127.0.0.1:8000 http = 127 .0.0.1:8000 #static-map = /static=/application/Platform/static daemonize = /opt/Platform/logs/uwsgi.log 启动 x uwsgi --ini tzop.ini 停止 x uwsgi --stop /tmp/tzop.pid 重载 x uwsgi --reload /tmp/tzop.pid nginx配置 uwsgi_pass 不对 location 目录转发 x server {       listen         80 ;       server_name _...