Django配置celery定时任务

本文涉及的产品
云数据库 Tair(兼容Redis),内存型 2GB
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
简介: 安装celery使用redis+celery的方式(使用的是阿里源,也可以选择不用)pip install -i https://mirrors.aliyun.com/pypi/simple/ -U "celery[redis]"修改Django的settings配置文件添加celery文件在app同级目录下添加一个文件夹,例:service_celery在文件夹中添加celery.

安装celery

  • 使用redis+celery的方式(使用的是阿里源,也可以选择不用)
pip install -i https://mirrors.aliyun.com/pypi/simple/ -U "celery[redis]"
AI 代码解读

修改Django的settings配置文件

  • 添加celery文件
    在app同级目录下添加一个文件夹,例:service_celery

在文件夹中添加celery.py文件,内容如下:

#!/usr/bin/env python
from __future__ import absolute_import, unicode_literals
import os
from celery import Celery

# set the default Django settings module for the 'celery' program.

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'settings')

app = Celery('bank_service')

# Using a string here means the worker doesn't have to serialize
# the configuration object to child processes.
# - namespace='CELERY' means all celery-related configuration keys
#   should have a `CELERY_` prefix.
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))
AI 代码解读
  • 配置settings文件,在settings.py中添加:
# import djcelery
# djcelery.setup_loader()

CACHES = {
    "default": {
        "BACKEND": "django_redis.cache.RedisCache",
        "LOCATION": "redis://127.0.0.1:6379/1",
        "OPTIONS": {
           "CLIENT_CLASS": "django_redis.client.DefaultClient",
        }
    }
}

REDIS_URL = CACHES['default']['LOCATION']
CELERY_BROKER_URL = REDIS_URL
BROKER_URL = REDIS_URL
AI 代码解读

使用celery任务

  • 创建异步任务
    在app同级目录下添加一个文件夹,例:service_tasks

在文件夹中添加tasks.py文件,内容如下:

from service_celery.celery import app
import time
@app.task(bind=True)
def add_num(self, a, b):
    time.sleep(1)
    c = a+b
    print(c)
AI 代码解读
  • 调用异步任务

from service_tasks.tasks import add_num
a, b = 1, 2
add_num.delay(a, b)
print("success")
AI 代码解读

启动celery

  • 启动
# ../venv_bank/bin/celery是我本地celery的路径,也可以直接使用celery
# worker后的都是一些配置方面的,也可以去掉
../venv_bank/bin/celery -A bank_service worker --loglevel=info  --max-tasks-per-child 500 --autoscale=8,4
AI 代码解读
相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
目录
打赏
0
0
0
0
4
分享
相关文章
Django学习二:配置mysql,创建model实例,自动创建数据库表,对mysql数据库表已经创建好的进行直接操作和实验。
这篇文章是关于如何使用Django框架配置MySQL数据库,创建模型实例,并自动或手动创建数据库表,以及对这些表进行操作的详细教程。
150 0
Django学习二:配置mysql,创建model实例,自动创建数据库表,对mysql数据库表已经创建好的进行直接操作和实验。
Django后端架构开发:Celery异步调优,任务队列和调度
Django后端架构开发:Celery异步调优,任务队列和调度
119 1
在 Django 上实现定时任务的指南
在 Django 中实现定时任务有多种方法,包括使用 Celery 和 Celery Beat、django-background-tasks、以及 APScheduler。根据您的需求和应用场景,可以选择最适合的方案。每种方法都有其优缺点,选择时应考虑任务复杂性、系统资源、以及维护成本。通过这些工具,您可以有效地管理和调度后台任务,提高应用程序的自动化水平和运行效率。
Django入门到放弃之常见配置及基本命令
Django入门到放弃之常见配置及基本命令
Django后端架构开发:Django 与 Celery 的深度集成
Django后端架构开发:Django 与 Celery 的深度集成
294 0
Django + Vue 实现图片上传功能的全流程配置与详细操作指南
 在现代Web应用中,图片上传是一个常见且重要的功能。Django作为强大的Python Web框架,结合Vue.js这样的现代前端框架,能够高效地实现这一功能。本文将详细介绍如何在Django项目中配置图片上传的后端处理,并在Vue前端实现图片的选择、预览和上传功能。
Django中的定时任务与后台任务队列的实践
【6月更文挑战第10天】在Django中实现定时任务和后台任务队列,可以使用Celery+Beat进行定时任务,Django Q处理后台任务。Celery配置包括设置Broker和Result Backend,创建Celery实例及任务。Django Q则涉及安装、配置ORM和创建任务。通过`async_task`将任务放入队列。注意性能、资源、安全和错误处理。使用时需考虑认证、输入验证、日志监控、部署策略和测试质量保障。
101 3
Django中的定时任务与后台任务队列的实践
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等