djcelery执行异步任务和定时任务

import djcelery
from datetime import timedelta

djcelery.setup_loader()

CELERY_QUEUES = {
    ‘beat_tasks‘:{
        ‘exchange‘:‘beat_tasks‘,
        ‘exchange_type‘:‘direct‘,
        ‘binding_key‘:‘beat_tasks‘,
    },
    ‘work_queue‘: {
        ‘exchange‘: ‘work_queue‘,
        ‘exchange_type‘: ‘direct‘,
        ‘binding_key‘: ‘work_queue‘,
    }
}

CELERY_DEFAULT_QUEUE = ‘work_queue‘
CELERY_IMPORTS = (
    ‘app01.tasks‘,
)
# 有些情况可以防止死锁
CELERYD_FORCE_EXECV = True
# 设置并发worker数量
CELERYD_CONCURRENCY = 4
# 允许重试
CELERY_ACKS_LATE = True
# 每个worker最多执行100个任务被销毁,可以防止内存泄漏
CELERYD_MAX_TASKS_PER_CHILD = 100
# 超时时间
CELERYD_TASK_TIME_LIMIT = 12 * 30

CELERYBEAT_SCHEDULE = {
    ‘task1‘:{
        ‘task‘:‘course-task‘,
        ‘schedule‘:timedelta(seconds=5),
        ‘options‘:{
            ‘queue‘:‘beat_tasks‘
        }
    }
}

celeryconfig.py

# from celery import task
import time
# @task
# def add(x,y):
#     time.sleep(3)
#     return x+y

from celery.task import Task

class CourseTask(Task):
    name = ‘course-task‘

    def run(self, *args, **kwargs):
        print(‘start course task‘)
        time.sleep(4)
        print(‘args={}, kwargs={}‘.format(args, kwargs))
        print(‘end course task‘)

tasks.py

from app01.tasks import CourseTask
from django.http import JsonResponse
def do(request):
    print(‘start do request‘)
    # CourseTask.delay()
    CourseTask.apply_async(args=(‘hello‘,),queue=‘work_queue‘)
    print(‘end do request‘)
    return JsonResponse({‘result‘:‘ok‘})

views.py

原文地址:https://www.cnblogs.com/xuqidong/p/12229999.html

时间: 2024-10-08 17:33:27

djcelery执行异步任务和定时任务的相关文章

celery执行异步任务和定时任务

一.什么是Clelery Celery是一个简单.灵活且可靠的,处理大量消息的分布式系统 专注于实时处理的异步任务队列 同时也支持任务调度 Celery架构 Celery的架构由三部分组成,消息中间件(message broker),任务执行单元(worker)和任务执行结果存储(task result store)组成. 消息中间件 Celery本身不提供消息服务,但是可以方便的和第三方提供的消息中间件集成.包括,RabbitMQ, Redis等等 任务执行单元 Worker是Celery提供

xadmin引入celery执行异步任务与定时任务

一.安装 pip install celery pip install django-celery-beat pip install django-celery-results pip install redis 安装这4个库 请注意不是django-celery.django-redis.celery-with-redis等库 以前版本的Celery需要一个单独的库来与Django一起工作 但是自从3.1以后就不再是这样了 Django现在支持开箱即用 pip list celery==4.3

SpringBoot任务篇Ⅴ --- 异步任务、定时任务、邮件任务

Java的任务在项目中需要用到的地方很多,比如,每月月末的财务报表给财务部门,定时给领导发个邮件短信等等.这时候我们就需要用到任务了,任务调度本身涉及到多线程并发.运行时间规则制定和解析.场景保持与恢复.线程池维护等诸多方面的工作.之前的学习中也使用过任务的框架Quartz,用起来也十分地编辑.本篇文章主要讲的是SpringBoot中基于注解的任务调度的简单使用.  一.异步任务 正常情况下,同一线程中的方法是同步执行的,比如我要请求一段数据,但是这个数据等待service层执行3s之后,然后才

调用enqueue执行异步请求有一个参数设置回调。

前面的内容介绍了OkHttp,本章就来教大家okhttp的基本使用,学了这些基本东西之后,大家有其他的需求可以自行扩展.以下的所有请求都是异步请求服务器,在真实的企业开发中,基本都是异步. 首先创建一个request对象,通过request设置请求url,通过这个类还可以设置更多的请求信息.然后通过Request去构造一个Call对象. 调用enqueue执行异步请求,有一个参数设置回调.请求成功或者失败会调用Callback接口的onResponse跟onFailure方法,因为这是异步请求,

Android 异步任务 代码很简短,简单异步工具封装,方便执行异步任务

比较简单,就3个类. 1.创建一个单例的线程池,用来执行异步任务 <pre name="code" class="java">package com.ferris.pool; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; public class FerrisPoolManager { private ExecutorService

36、springboot——异步任务、定时任务、邮件任务

一.异步任务 测试如下 1.不是异步方法的时候: 进行等待三秒再进行应答 @Service public class AsynService { public void hello(){ try { Thread.sleep(3000); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("处理数据....."); } } controller类: @RestController p

&#8203;老男孩教育每日一题-第85天-下面这个脚本直接执行没有问题,在定时任务中有问题,什么原因?

脚本内容: [[email protected] scripts]# cat /server/scripts/ip.sh  #!/bin/bash IP=$(ifconfig eth0 |awk -F "[ :]+" 'NR==2{print $4}') echo "ip:$IP" >> /tmp/ip.txt 定时任务: [[email protected] scripts]# crontab -l * * * * * /bin/bash /serve

【WP8】同步执行异步代码

微软的StorageFile只支持异步的方式进行文件操作,我之前也封装过一个StorageHelper,但是当所有的方法都是异步的时候也带来一些问题 1.比如我们不能在构造函数调用异步代码(等待), 2.比如我们在离开App的时候我们需要对数据进行快速的保存(在事件中),这个时候就不适合用异步了,异步可能会导致保存失败,因为App已经不在前台了 最近就遇到了一个这样的需求 我封装了一个SqliteHelper类,提供了一些数据库操作的一些常用方法,在数据库使用之前,需要保证数据库路径的文件夹是存

python使用sched模块执行周期性任务和定时任务

执行周期性任务 sched模块是一个通用的事件调度程序,可以对任务进行延迟调度,基于此,可以用它来实现周期性任务. # coding:utf8 import time import sched # 初始化scheduler类 # 第一个参数是一个可以返回时间戳的函数,第二个参数可以在定时未到达之前阻塞. s = sched.scheduler(time.time, time.sleep) # 被周期性调度的任务 def task(): print("run time: {}".form