首页 > 其他分享 >celery定时任务

celery定时任务

时间:2024-05-29 18:22:41浏览次数:22  
标签:CELERY task settings celery 任务 import 定时 banner

celery定时任务.jpg
注意:不论是定时任务,还是普非定时任务,都需要启动worker,别忘记。(〃>目<)

老方法

# 1 配置文件 celery.py中 不是settings.py中!!!

# 时区
app.conf.timezone = 'Asia/Shanghai'
# 是否使用UTC
app.conf.enable_utc = False

# 任务的定时配置
from datetime import timedelta
from celery.schedules import crontab
app.conf.beat_schedule = {
    # add-task  这个名称可以随便写
    'add-task': {
        # 导入到具体的函数  注意 是导入到具体的任务函数!
        'task': 'celery_task.user_task.add',
        'schedule': timedelta(seconds=3),
        # 'schedule': crontab(hour=8, day_of_week=1),  # 每周一早八点
        'args': (300, 150),
    },
    'send-sms-task': {
        'task': 'celery_task.order_task.send_sms',
        # 'schedule': timedelta(seconds=30),
        'schedule': crontab(hour=11,minute=20),  # 每天11点20执行
        'args': ('189232222',888),
    },
}

# 2 启动beat  定时任务是用beat
    celery -A celery_task beat -l debug
# 3 启动worker
	celery -A celery_task worker -l debug -P eventlet  # 别忘记这一步!!!

新方法

settings.py

# settings.py
# celery配置
CELERY_BROKER_URL = 'redis://localhost:6379/1'
CELERY_RESULT_BACKEND = 'redis://localhost:6379/2'
CELERY_ACCEPT_CONTENT = ['json']
CELERY_TASK_SERIALIZER = 'json'
CELERY_RESULT_SERIALIZER = 'json'
CELERY_TIMEZONE = 'UTC'



# celery官方方案的定时任务
from datetime import timedelta
CELERY_BEAT_SCHEDULE = {
    'update-banner': {
        # 'task': 'luffy_api.apps.home.tasks.update_banner',
        'task': 'home.tasks.update_banner',
        'schedule': timedelta(seconds=10), # 间隔时间
        'args': (), # 需要传递的参数
    },
    # 其他定时任务...
}

celery.py

from celery import Celery
import os
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "luffy_api.settings.dev")
import django
django.setup()
from django.conf import settings


app = Celery("luffy_api")
app.config_from_object('django.conf:settings', namespace='CELERY')
app.autodiscover_tasks()

tasks.py

from django.core.cache import cache

@shared_task
def update_banner():
    banner_instance = Banner.objects.filter(is_delete=False, is_show=True).order_by('orders')[0:settings.BANNER_COUNT]
    serializer = BannerSerizlizer(instance=banner_instance, many=True)
    # serializer.data 返回的是经过序列化的数据。
    for item in serializer.data:
        item['image']=settings.BASE_URL+ item['image']
    cache.set("banner_list", serializer.data)
    return '轮播图缓存更新成功'

标签:CELERY,task,settings,celery,任务,import,定时,banner
From: https://www.cnblogs.com/ccsvip/p/18220852

相关文章

  • celery官方解决方案(基于django新)
    使用官方方案之前,先看看目录结构。luffy_api/__init__.pycelery.pysettings.pyurls.pywsgi.pymyapp/__init__.pytasks.py#也就是放在项目名称同名的内部文件夹下(和settings)同名#必须是这样的结构。第一步安装必要的模块......
  • celery通用解决方案(基于django老)
    通用方案移动项目celery_task到项目根目录在视图中写逻辑启动worker-->celery-Acelery_taskworker-ldebug-Peventlet运行django,正常使用接口#1把之前的celery_task移动过到项目根路径,然后开启worker#2在视图函数中提交任务#fromlibs.tx_smsimportg......
  • 初始celery
    使用celery前的一些注意事项res=add.delay(x,y)print(res.id)#这个id才是真正的任务id#安装pipinstallcelery#安装redis(消息队列和结果存储使用redis)pipinstallredis#windows安装,mac和Linux不需要安装下面的包pipinstalleventlet#官网解释#Celeryi......
  • 2024-05-29:用go语言,给定一个只包含正整数的数组 nums,任务是通过多次操作最小化数组的
    2024-05-29:用go语言,给定一个只包含正整数的数组nums,任务是通过多次操作最小化数组的长度。每次操作可以从数组中选择两个不同的下标i和j,使得nums[i]和nums[j]均为正整数。然后,将nums[i]除以nums[j]的余数插入数组末尾,同时删除原始的两个元素。最终要求计算进行操作......
  • Spark下的Work目录定时清理
     问题在跑spark任务的时候发现任务不能执行。在查看的时候发现sparkwork节点的/usr/local/spark/work/目录占用了很大空间,导致根目录/满了。原因使用sparkstandalone模式执行任务,没提交一次任务,在每个节点work目录下都会生成一个文件夹,命名规则app-20160614191730-0249。该文......
  • windows添加计划任务异常--问题总结
    首先确定.bat脚本双击可正常运行当使用windows添加计划任务后,运行无报错(看历史记录正常运行成功),但是脚本内容实际未成功可以看下以下内容:1.查看脚本名是否含有中文,改为全英文2.将执行用户改成SYSTEM3.脚本中添加切换到脚本文件夹的命令4.任务重添加脚本时添加脚本所在目录......
  • 《第二节》一、FreeRTOS学习笔记-任务创建和删除
    FreeRTOS的任务创建和删除1,任务创建和删除的API函数(熟悉)任务的创建和删除本质就是调用FreeRTOS的API函数一、任务创建动态创建任务:任务的任务控制块以及任务的栈空间所需的内存,均由FreeRTOS从FreeRTOS管理的堆中分配静态创建任务:任务的任务控制块以及任务的栈空间所需......
  • go语言之cron定时任务
    ####版本一定选对goget"github.com/robfig/cron/v3"代码如下:packagemainimport("fmt""github.com/robfig/cron/v3""os""runtime""time")//GetOS返回当前操作系统的字符串表示funcGetOS()......
  • Leetcode621. 任务调度器
    EverydayaLeetcode题目来源:621.任务调度器类似题目:1953.你可以工作的最大周数解法1:贪心本质上来说,我们需要构造一个尽量短的,相同元素间隔>=(n+1)的序列。用一个数组cnt统计每个任务的次数。设cnt的元素和为s,这是任务总数,也是序列长度的下界。当存在多个......
  • 2022年全国职业院校技能大赛高职组“信息安全管理与评估”赛项第一阶段任务书
    2022年全国职业院校技能大赛高职组“信息安全管理与评估”赛项任务书1一、赛项第一阶段时间180分钟。二、赛项信息竞赛阶段任务阶段竞赛任务竞赛时间分值第一阶段平台搭建与安全设备配置防护任务1网络平台搭建180分钟50任务2......