celery定时任务
celery定时任务#
参考博客:https://www.cnblogs.com/xiaonq/p/14097376.html
1.项目目录结构图:#
2. opwf_project/celery_task文件夹#
# -*- coding: utf-8 -*-
import os, sys, time, django
from celery import Celery
# 1.添加django项目根路径
# celery项目中的所有导包地址, 都是以CELERY_BASE_DIR为基准设定.
# 执行celery命令时, 也需要进入CELERY_BASE_DIR目录执行.
CELERY_BASE_DIR = os.path.dirname(os.path.abspath(__file__))
sys.path.insert(0, os.path.join(CELERY_BASE_DIR, '../opwf'))
# 2.添加django环境
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "opwf.settings")
django.setup() # 读取配置
# 定义celery实例, 需要的参数, 1, 实例名, 2, 任务发布位置, 3, 结果保存位置
# 3.celery基本配置
app = Celery('mycelery',
broker='redis://127.0.0.1:6379/14', # 任务存放的地方
backend='redis://127.0.0.1:6379/15', # 结果存放的地方
include=[
'celery_task.tasks', #定时任务
'celery_task.task2',
]) # 自己写的定时任务
# 4.实例化时可以添加下面这个属性 这个在真实项目中最好不要写
app.conf.update(
result_expires=3600, # 执行结果放到redis里,一个小时没人取就丢弃
)
# 5.配置定时任务:每5秒钟执行 调用一次celery_pro下tasks.py文件中的add函数
app.conf.beat_schedule = {
'add-every-5-seconds': {
'task': 'celery_task.tasks.test_task_crontab',
'schedule': 5.0, # 5秒执行一次
'args': (16, 16) # 传参
},
}
# 6.添加时区配置 一定要写这个时区 TUC会慢8个小时
app.conf.timezone = 'Asia/Shanghai'
if __name__ == '__main__':
app.start()
task.py文件 定义定时任务函数的
# -*- coding:utf8 -*-
from .celery import app
import time,random
@app.task
def randnum(start,end):
time.sleep(3)
return random.randint(start,end)
tasks2.py
3、在django项目中调用#
# 1.导入任务
from celery_task import tasks
# 2.执行异步任务
tasks.send_sms_code.delay(18538752511,())
命令管理
'''1、celery管理 '''
celery multi start celery_test -A celery_test -l debug --autoscale=50,5
# celery并发数:最多50个,最少5个
ps auxww|grep "celery worker"|grep -v grep|awk '{print $2}'|xargs kill -9
# 关闭所有celery进程
'''2、django-celery-beat心跳服务管理 '''
celery -A celery_test beat -l info -S django #启动心跳任务
ps -ef | grep -E "celery -A celery_test beat" | grep -v grep| awk '{print $2}' | xargs kill -TERM &> /dev/null # 杀死心跳所有进程
作者:就学45分钟
出处:https://www.cnblogs.com/tjw-bk/p/14110260.html
版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。
如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了