zoukankan      html  css  js  c++  java
  • celery在django项目中的运用和定时任务

    #CeleryTest/celery.py
    
    from __future__ import absolute_import,unicode_literals
    import os
    from celery import Celery
    
    #set the default Django settings module for the 'celery' program.
    #'CeleryTest'项目名
    os.environ.setdefault('DJANGO_SETTINGS_MODULE','CeleryTest.setting')
    app = Celery('CeleryTest')
    
    #Using a string here means the worker don't to serialize
    #the configuration object to child processes
    #Using a string here means the worker don't to serialize
    
    app.config_from_object('django.conf:settings',namespace='CELERY')
    
    #load task modules from all registered Django app configs
    app.autodiscover_tasks()
    
    @app.task(bind=True)
    def debug_task(self):
        print('Request: {0!r}'.format(self.request))
    
    
    #apple/tasks.py
    #create your tasks here
    from __future__ import absolute_import,unicode_literals
    from celery import shared_task
    
    #@shared_task去找这个项目下所有app的任务
    @shared_task
    def add(x,y):
        return x+y
    
    @shared_task
    def mul(x,y):
        return x*y
    
    @shared_task
    def xsum(number):
        return sum(number)
    
    
    
    #CeleryTest/settings.py
    #for celery
    CELERY_BROKER_URL = 'redis://:@192.168.14.41'
    CELERY_RESULT_BACKEND = 'redis://:@192.168.14.41'
    
    
    
    #CeleryTest/urls.py
    from django.conf.urls import url
    from django.contrib import admin
    from ..apple import views
    urlpatterns = [
        url(r'^admin/', admin.site.urls),
        url(r'^index/$',views.index),
    ]
    
    #apple/views.py
    from django.shortcuts import render,HttpResponse
    from ..apple import tasks
    from celery.result import AsyncResult
    # Create your views here.
    def index(request):
        """会返回一个任务id,然后有一个函数一直去查询他的状态"""
        res = tasks.add.delay(4,777)
        print("res:",res)
        return HttpResponse(res.task_id)
    
    def task_res(request):
        #获取任务id的状态
        result = AsyncResult(id="1111111")
        #return HttpResponse(result.get())
        return HttpResponse(result.status)
    
    
    

    https://www.cnblogs.com/alex3714/articles/6351797.html

  • 相关阅读:
    MySQL
    docker-compose部署redis及RabbitMq
    docker-compose部署nacos单机版(简洁优化版)
    用U盘启动安装CentOS的详解
    mysql 获取id最大值
    JAVA编码-- 比较两个BigDecimal大小(重要)
    MYSQL如何把年月日3个int类型的字段拼接成日期类型,并按照日期段进行查询
    Mysql如何根据年月日来查询数据
    springboot 调用redisTemplate时总是为null的解决方法
    shell中read用法
  • 原文地址:https://www.cnblogs.com/venvive/p/11809431.html
Copyright © 2011-2022 走看看