Django配置celery定时任务

本文涉及的产品
云数据库 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]"

修改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))
  • 配置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

使用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)
  • 调用异步任务

from service_tasks.tasks import add_num
a, b = 1, 2
add_num.delay(a, b)
print("success")

启动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
相关实践学习
基于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
相关文章
|
5月前
|
NoSQL 调度 Redis
33 Django高级 - celery
33 Django高级 - celery
25 0
|
7月前
|
关系型数据库 MySQL 数据库
Django的简介安装与配置及两大设计模式2
Django的简介安装与配置及两大设计模式2
58 0
|
7月前
|
设计模式 前端开发 数据库
Django的简介安装与配置及两大设计模式1
Django的简介安装与配置及两大设计模式1
88 1
|
9天前
|
JavaScript 中间件 Python
Django如何配置解决CORS问题
Django如何配置解决CORS问题
14 0
|
6月前
|
消息中间件 Kafka API
Django中如何配置kafka消息队列
Django中如何配置kafka消息队列
|
4月前
|
算法 Docker Python
Python【算法中心 03】Docker部署Django搭建的Python应用流程实例(Docker离线安装配置+Django项目Docker部署)
Python【算法中心 03】Docker部署Django搭建的Python应用流程实例(Docker离线安装配置+Django项目Docker部署)
59 0
|
4月前
|
SQL Python BI
Django实践-07日志调试,Django-Debug-Toolbar配置与sql优化
Django实践-07日志调试,Django-Debug-Toolbar配置与sql优化
Django实践-07日志调试,Django-Debug-Toolbar配置与sql优化
|
4月前
|
前端开发 应用服务中间件 Shell
django(三)django配置支持nginx访问
我正在参加「掘金·启航计划」 VUE3.0版本发布,按照之前的计划,博客前端的页面打算使用VUE3.0重新编写。目前后端使用的是PHP的web框架thinkphp5.0,新版的博客后端打算使用python的web框架django。 目前我的服务器使用的环境是lnmp(centos+nginx+mariadb+php),因此运行django框架的时候,我选择使用nginx + uwsgi 我的服务器使用的是阿里云的centos7.8 运行原理如下图所示: 一:技术扩展WSGI WSGI 是 Web Server Gateway Interface 的缩写。以层的角度来看,WSGI 所在层的位置低
31 0
|
4月前
|
关系型数据库 MySQL 数据库
django配置mysql
django配置mysql
22 0
|
6月前
|
调度 数据库 Python
Django实现定时任务
Django实现定时任务