celery 异步发送短信验证码、延迟任务
短信

## celery.py
import os, django
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "luffyapi.settings.dev")
django.setup()
from celery import Celery
broker = 'redis://127.0.0.1:6379/15'
backend = 'redis://127.0.0.1:6379/15'
app = Celery(broker=broker, backend=backend, include=['celery_task.tasks'])
# 时区
app.conf.timezone = 'Asia/Shanghai'
# 是否使用UTC
app.conf.enable_utc = False
# 自动任务的定时配置
from celery.schedules import crontab
from datetime import timedelta
app.conf.beat_schedule = {
# 定时任务:任务名自定义
# 'update_banner_cache': {
# 'task': 'celery_task.tasks.update_banner_cache', # 任务源
# 'args': (), # 任务参数
# 'schedule': timedelta(seconds=8), # 定时添加任务的时间
# # 'schedule': crontab(hour=8, day_of_week=1), # 每周一早八点
# },
'send_msg': {
'task': 'celery_task.tasks.send_msg',
'args': (),
'schedule': timedelta(seconds=10),
}
}
tasks.py
from .celery import app
from home.models import Banner
from django.conf import settings
from django.core.cache import cache
from home.serializers import BannerModelSerializer
@app.task
def update_banner_cache():
banner_query = Banner.objects.filter(is_delete = False, is_show=True).order_by('-order')[:settings.BANNER_COUNT]
banner_list = BannerModelSerializer(banner_query, many=True).data
for banner_dic in banner_list:
banner_dic['image'] = settings.BASE_URL + banner_dic['image']
cache.set('banner_list', banner_list)
#异步定时发送手机验证码
from libs.tx_sms import sms
@app.task
def send_msg():
code = sms.get_code()
mobile = '13322332233'
result = sms.send_msg(mobile, code)
print(result)
然后Terminal开两个窗口,回到根目录,执行, celery worker -A celery_task -l info -P eventlet 和 celery beat -A celery_task -l info 则10s会发一次验证码
延迟任务

## celery.py
from celery import Celery
# broker:任务仓库
broker = 'redis://127.0.0.1:6379/15'
# backend:任务结果仓库
backend = 'redis://127.0.0.1:6379/15'
# include:任务(函数)所在文件
app = Celery(broker=broker, backend=backend, include=['celery_package.tasks'])
task.py
from .celery import app
@app.task
def jump(n1, n2):
res = n1 * n2
print('n1 * n2 = %s' % res)
return res
add_task.py
from celery_package.tasks import jump
# 直接执行函数
# jump(10, 20)
# 添加celery立即任务
# jump.delay(10, 20)
# 添加延迟任务
# args是jump任务需要的参数,没有就设置为空()
# eta是该任务执行的UTC格式的时间
from datetime import datetime, timedelta
def eta_second(second):
ctime = datetime.now()
utc_ctime = datetime.utcfromtimestamp(ctime.timestamp())
time_delay = timedelta(seconds=second)
return utc_ctime + time_delay
def eta_days(days):
ctime = datetime.now()
utc_ctime = datetime.utcfromtimestamp(ctime.timestamp())
time_delay = timedelta(days=days)
return utc_ctime + time_delay
# apply_async就是添加延迟任务
jump.apply_async(args=(200, 50), eta=eta_second(10))
**右键运行add_tasks. 然后再Terminal窗口执行celery worker -A celery_package -l info -P eventlet 则过10s后,才会产生运算结果 **
celery 异步发送短信验证码、延迟任务的更多相关文章
- 使用celery异步发送短信
目录 1.使用celery异步发送短信 1.1在celery_task/mian.py中添加发送短信函数 1.2在verifcations/views.py中添加celery发送短信视图函数 1.3 ...
- celery异步发送短信
1.使用celery异步发送短信 1.1 在 celery_task/mian.py 中添加发送短信函数 # celery项目中的所有导包地址, 都是以CELERY_BASE_DIR为基准设定. # ...
- day8(使用celery异步发送短信)
1.1在celery_task/mian.py中添加发送短信函数 # celery项目中的所有导包地址, 都是以CELERY_BASE_DIR为基准设定. # 执行celery命令时, 也需要进入CE ...
- 超实用的JavaScript代码段 Item4 --发送短信验证码
发送短信验证码 实现点击“发送验证码”按钮后,按钮依次显示为“59秒后重试”.“58秒后重试”…直至倒计时至0秒时再恢复显示为“发送验证码”.在倒计时期间按钮为禁用状态 . 第一步.获取按钮.绑定事件 ...
- Laravel5中使用阿里大于(鱼)发送短信验证码
在做用户注册和个人中心的安全管理时,我实现借助第三方短信平台(阿里大于(鱼))在Laravel框架中进行手机验证的设置:阿里大于,是阿里通信旗下优质便捷的云通信服务平台,整合了三大运营商的通信能力,为 ...
- 微信小程序发送短信验证码完整实例
微信小程序注册完整实例,发送短信验证码,带60秒倒计时功能,无需服务器端.效果图: 代码: index.wxml <!--index.wxml--> <view class=&quo ...
- java + maven 实现发送短信验证码功能
如何使用java + maven的项目环境发送短信验证码,本文使用的是榛子云短信 的接口. 1. 安装sdk 下载地址: http://smsow.zhenzikj.com/doc/sdk.html ...
- android发送短信验证码并自动获取验证码填充文本框
android注册发送短信验证码并自动获取短信,截取数字验证码填充文本框. 一.接入短信平台 首先需要选择短信平台接入,这里使用的是榛子云短信平台(http://smsow.zhenzikj.com) ...
- java 阿里云接口实现发送短信验证码
此刻自己做的小项目中,需要用到手机发送短信验证码实现注册功能,于是就去阿里云注册了账号,并实现随机发送验证码的功能 第一步:在阿里云官网登录注册 已有支付宝或淘宝的账号可以直接登录,最后需要实名认 ...
随机推荐
- Codeforces Round #586 (Div. 1 + Div. 2)
传送门 A. Cards 记录一下出现的个数就行. Code #include <bits/stdc++.h> #define MP make_pair #define fi first ...
- vue项目实现路由按需加载的3种方式
vue异步组件技术 ==== 异步加载vue-router配置路由 , 使用vue的异步组件技术 , 可以实现按需加载 .但是,这种情况下一个组件生成一个js文件 /* vue异步组件技术 */ { ...
- Linux 的 Crond(二)
最近由于工作中用到了crond,之前对crond不是很了解,只知道咋用,但是这次需要考虑好多情况,所以又深入了解了一下crond,下面就以下几个问题来谈谈crond. crond 中指定的job,如果 ...
- 初学Python之爬虫的简单入门
初学Python之爬虫的简单入门 一.什么是爬虫? 1.简单介绍爬虫 爬虫的全称为网络爬虫,简称爬虫,别名有网络机器人,网络蜘蛛等等. 网络爬虫是一种自动获取网页内容的程序,为搜索引擎提供了重要的 ...
- SQL查询--内连接、外连接、自连接查询
先创建2个表:学生表和教师表 1.内连接: 在每个表中找出符合条件的共有记录.[x inner join y on...] 第一种写法:只用where SELECT t.TEACHER_NAME, ...
- 趣谈Linux操作系统学习笔记:第二十八讲
一.引子 磁盘→盘片→磁道→扇区(每个 512 字节) ext* 定义文件系统的格式 二.inode 与块的存储 1.块 2.不用给他分配一块连续的空间 我们可以分散成一个个小块进行存放 1.优点 2 ...
- vscode源码分析【三】程序的启动逻辑,性能问题的追踪
第一篇: vscode源码分析[一]从源码运行vscode 第二篇:vscode源码分析[二]程序的启动逻辑,第一个窗口是如何创建的 启动追踪 代码文件:src\main.js 如果指定了特定的启动参 ...
- Python爬虫教程-使用chardet
Spider-03-使用chardet继续学习python爬虫,我们经常出现解码问题,因为所有的页面编码都不统一,我们使用chardet检测页面的编码,尽可能的减少编码问题的出现 网页编码问题解决使用 ...
- 【TCP/IP网络编程】:01理解网络编程和套接字
1.网络编程和套接字 网络编程与C语言中的printf函数和scanf函数以及文件的输入输出类似,本质上也是一种基于I/O的编程方法.之所以这么说,是因为网络编程大多是基于套接字(socket,网络数 ...
- IT兄弟连 HTML5教程 HTML语言的语法 1
HTML是文本类型的语言,和其他任何一门语言相比,语法都是最简单的.但在编写HTML文件时,必须遵循HTML的语法规则.一个完整的HTML文件由标题.段落.列表.表格.文本,即嵌入的各种对象所组成,这 ...