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

  • 相关阅读:
    phpStorm激活码
    找回自己
    延迟加载JavaScript
    [MAC]如何通过 macOS 恢复功能重新安装 macOS
    Realm JavaScript
    Realm .NET
    [MAC]获得在线帮助:恢复信息
    [Swift]UILabel文字截断
    算法和数据结构可视化
    Realm Swift
  • 原文地址:https://www.cnblogs.com/venvive/p/11809431.html
Copyright © 2011-2022 走看看