提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加
例如:第一章 Python 机器学习入门之pandas的使用
提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录- 系列文章目录
- 前言
- 一、异步,定时任务
- 1,原理
- 2,使用
- 二、分页
- 1,使用场景
前言
提示:这里可以添加本文要记录的大概内容:
例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。
提示:以下是本篇文章正文内容,下面案例可供参考
一、异步,定时任务是什么?异步:异步任务主要用于处理处理时间长并且不需要返回结果的一些内容
应用场景:例如在我们记录用户的操作日志的时候, 不可能等日志记录完成再实现正常的业务, 所以可以把机制的记录改为异步操作即可
定时:这个方法是系统自动调用的,不需要通过controller层来调用。只要满足了cron表达式即可调用
应用场景:定时任务主要应用的场景是定时调用,比如做一个办公系统,每周一早上7点30分给所有员工发送一个邮件,告诉员工八点要开会,请员工准时参加会议。每月的账单通过邮件的形式发送给相关人员、数据监控等等
二、使用步骤 1.引入库代码如下(示例):
启动命令
celery -A celery_task worker -l info -P eventlet
celery -A celery_task beat -l info
配置(仅测试使用)
目录结构
├─celery_task
│ └─__init__
│ └─config
│ └─tasks
主程序配置
import os
from datetime import timedelta
import django
from celery import Celery
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "property.settings")
django.setup()
celery_app = Celery('test')
celery_app.config_from_object('celery_task.config')
celery_app.autodiscover_tasks(['celery_task.tasks'])
celery_app.conf.update(
CELERYBEAT_SCHEDULE={
'time_task': {
'task': 'celery_task.tasks.time_task',
'schedule': timedelta(seconds=3),
'args': ()
},
}
)
BROKER_URL = 'redis://127.0.0.1:6379/11'
CELERY_RESULT_BACKEND = 'redis://127.0.0.1:6379/12'
# 时区
# CELERY_TIMEZONE = 'Asia/Shanghai'
# 导入指定的任务模块
CELERY_IMPORTS = (
'celery_task.tasks',
)
import time
from celery_task import celery_app
# @app.task 指定将这个函数的执行交给celery异步执行
@celery_app.task
def test(mobile, code):
print('1111')
print(mobile, code)
time.sleep(15)
return mobile + code
@celery_app.task(name='send_email')
def send_email():
print('发送运输邮件')
@celery_app.task(name='send_email2')
def send_email2():
print('发送到站邮件')
@celery_app.task(name='celery_task.tasks.time_task') # name="位置写要全"
def time_task():
print('定时3秒执行一次')
2.分页:
序列化输出
class RepairIntoSer(serializers.ModelSerializer):
class Meta:
model = RepairInto
fields = "__all__"
class RepairPage(ListAPIView):
queryset = RepairInto.objects.all()
serializer_class = RepairIntoSer
pagination_class = Pagination
class Pagination(PageNumberPagination):
# 设置一页多少数据
page_size = 3
# 设置页码的参数
page_query_param = 'page'
page_size_query_param = 'pagesize'
总结
提示:这里对文章进行总结:
例如:以上就是今天要讲的内容



