项目跟目录创建celery包,目录结构如下:

mycelery/
├── config.py
├── __init__.py
├── main.py
└── sms/
├── __init__.py
├── tasks.py

配置文件config.py:

broker_url = 'redis://127.0.0.1:6379/15'
result_backend = 'redis://127.0.0.1:6379/14'

任务文件tasks.py

# celery的任务必须写在tasks.py的文件中,别的文件名称不识别!!!
from mycelerys.main import app
import time import logging
log = logging.getLogger("django") @app.task # name表示设置任务的名称,如果不填写,则默认使用函数名做为任务名
def send_sms(mobile):
"""发送短信"""
print("向手机号%s发送短信成功!"%mobile)
time.sleep(5) return "send_sms OK" @app.task # name表示设置任务的名称,如果不填写,则默认使用函数名做为任务名
def send_sms2(mobile):
print("向手机号%s发送短信成功!" % mobile)
time.sleep(5) return "send_sms2 OK"

最后在main.py主程序对django的配置文件进行加载

# 主程序
import os
from celery import Celery
# 创建celery实例对象
app = Celery("sms") # 把celery和django进行组合,识别和加载django的配置文件
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'celeryPros.settings.dev') # 通过app对象加载配置
app.config_from_object("mycelerys.config") # 加载任务
# 参数必须必须是一个列表,里面的每一个任务都是任务的路径名称
# app.autodiscover_tasks(["任务1","任务2"])
app.autodiscover_tasks(["mycelerys.sms",]) # 启动Celery的命令
# 强烈建议切换目录到mycelery根目录下启动
# celery -A mycelery.main worker --loglevel=info

Django视图调用:

from django.shortcuts import render

# Create your views here.

from django.shortcuts import render,HttpResponse
from mycelerys.sms.tasks import send_sms,send_sms2
from datetime import timedelta from datetime import datetime
def test(request): ################################# 异步任务 # 1. 声明一个和celery一模一样的任务函数,但是我们可以导包来解决 # send_sms.delay("110")
# send_sms2.delay("119")
# send_sms.delay() 如果调用的任务函数没有参数,则不需要填写任何内容 ################################# 定时任务 # ctime = datetime.now()
# # 默认用utc时间
# utc_ctime = datetime.utcfromtimestamp(ctime.timestamp())
# time_delay = timedelta(seconds=10)
# task_time = utc_ctime + time_delay
# result = send_sms.apply_async(["911", ], eta=task_time)
# print(result.id) return HttpResponse('ok')

最新文章

  1. Word2vec多线程(tensorflow)
  2. mysql explain执行计划详解
  3. CentOS MySQL 配置
  4. Window Server 2012 R2 没有照片查看器 打开图片都是画板问题怎么解决
  5. 一个统计报表sql问题
  6. win2003 Enterprise Edition sp2 企业版序列号
  7. MapReduce之Mapper类,Reducer类中的函数(转载)
  8. android 资源文件
  9. zabbix监控服务器部署
  10. Eclipse中配置weka,以及添加算法
  11. Hibernate框架双向多对多关联映射关系
  12. Struts2学习笔记④
  13. 软件工程(GZSD2015)学生博客列表
  14. python基础6之迭代器&生成器、json&pickle数据序列化
  15. July 05th. 2018, Week 27th. Thursday
  16. C# 使用CsvHelper读取.csv文件
  17. WEB前端开发常见问题汇总
  18. CF #552(div3)F 背包问题
  19. UVALive - 4222
  20. 优雅的使用列表推导式和lambda

热门文章

  1. Luogu1038 神经网络 (拓扑排序)
  2. Spring源码 07 IOC refresh方法2
  3. 一文带你弄懂 JVM 三色标记算法!
  4. C++ 一键关闭屏幕
  5. ping: sina.cn: Name or service not known
  6. 搭建eBackup对接NFS服务
  7. 使用Inno Setup 制作软件安装包详细教程(与开发语言无关)
  8. docker学习笔记-常用镜像相关命令
  9. 基于 vite 创建 vue3 全家桶项目(vite + vue3 + tsx + pinia)
  10. Java中的StringBuilder和StringBuffer适用场景