zoukankan      html  css  js  c++  java
  • Django异步与定时任务Celery

    将任务分配给其他的进程去运行,django的主进程只负责发起任务,而执行任务的不在使用django的主进程。Python有一个很棒的异步任务框架,叫做celery。

    Django为了让开发者开发更加方便,集成了celery,形成了django-celery插件

    1.安装django-celery

    #Redis模块的兼容不稳定,必须安装2.10.6
    pip install django-celery 
    pip install django-redis 
    pip install redis==2.10.6

     django-celery只是将任务发布出去,让长时间的任务:爬取一个网站,发送一个验证码这样的工作,不再阻塞主线程,web服务器只负责发起任务和接受任务的结果,中间执行的部分交给其他线程、进程、服务器去做。

    2.安装redis

    Celery异步任务

    1、在settings当中配置django-celery

    在settings.py 配置

    # celery 设置
    # celery中间人 redis://redis服务所在的ip地址:端口/数据库号
    BROKER_URL = 'redis://192.168.124.128:6379/3'
    # celery结果返回,可用于跟踪结果
    CELERY_RESULT_BACKEND = 'redis://192.168.124.128:6379/3'
    # celery内容等消息的格式设置
    CELERY_ACCEPT_CONTENT = ['application/json', ]
    CELERY_TASK_SERIALIZER = 'json'
    CELERY_RESULT_SERIALIZER = 'json'
    # celery时区设置,使用settings中TIME_ZONE同样的时区
    CELERY_TIMEZONE = TIME_ZONE

    在项目的主目录下,编写celery的控制文件,(控制文件的名字最好是celery)

     celery.py

    import os
    from celery import Celery
    from django.conf import settings
    
    # 设置celery的环境变量和django-celery的工作目录
    os.environ.setdefault("DJANGO_SETTINGS_MODULE","celery_pro.settings")
    # 实例化celery应用,传入服务器名称
    app = Celery("app01")
    # 加载celery配置
    app.config_from_object("django.conf:settings")
    
    # 如果在项目中,创建了task.py,那么celery就会沿着app去查找task.py来生成任务
    app.autodiscover_tasks(lambda :settings.INSTALLED_APPS)

    2.新建tasks.py在app01下

    from __future__ import absolute_import
    from celery_pro.celery import app
    
    @app.task
    def add(x,y):
        return x+y

     3.然后为了djcelery进行数据库同步

    python manage.py check
    python manage.py makemigrations
    python manage.py migrate

    .编写视图触发异步任务

  • 相关阅读:
    Redis慢查询日志
    Docker:容器
    CentOS7.X中使用yum安装nginx
    Nginx简介及配置详解(二)
    Nginx简介及配置详解(一)
    Redis持久化策略
    golang学习笔记——异常
    golang学习笔记——面向对象(接口)
    golang学习笔记——面向对象(方法)
    golang学习笔记——struct结构体
  • 原文地址:https://www.cnblogs.com/edeny/p/15725389.html
Copyright © 2011-2022 走看看