Django高级扩展之系统后台使用celery

这篇具有很好参考价值的文章主要介绍了Django高级扩展之系统后台使用celery。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

如果我们在系统后台想某日某时执行某个任务,或者每隔一段时间执行某个任务,可以使用celery来完成。

目录

安装

安装celery

安装django_celery_beat

celery配置

注册应用

celery配置

修改__init__.py

表迁移

执行迁移

控制台运行截图

新增数据表

安装django-celery-results

执行命令

注册应用

创建表

如果出现错误

创建后台管理员账号

创建任务文件

添加任务

周期任务

启动定时任务 

总结


安装

安装celery

pip install celery

安装django_celery_beat

系统后台使用定时任务,需要安装额外包:

pip install django_celery_beat

celery配置

注册应用

首先在settings.py中注册应用:

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'myapp',
    'django_celery_beat'
]

celery配置

在工程目录下创建celery.py文件

内容如下:

from celery import Celery
from django.conf import settings
import os


# 为celery设置环境变量
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'project.settings')

# 创建应用
app = Celery('project')

# 配置应用
app.conf.update(
    # 配置broker, 这里我们用redis作为broker
    BROKER_URL='redis://127.0.0.1:6379/1',

    # 使用项目数据库存储任务执行结果
    CELERY_RESULT_BACKEND='django-db',

    # 配置定时器模块,定时器信息存储在数据库中
    CELERYBEAT_SCHEDULER='django_celery_beat.schedulers.DatabaseScheduler',

)

# 设置app自动加载任务
# 从已经安装的app中查找任务
app.autodiscover_tasks(lambda: settings.INSTALLED_APPS)

修改__init__.py

修改工程目录下__init__.py文件,增加以下内容:

from .celery import app as celery_app

__all__ = ['celery_app']

表迁移

由于定时器信息存储在数据库中,需要生成对应表迁移文件,

然后执行迁移操作,创建diango_celery_beat对应表:

执行迁移

python manage.py migrate django_celery_beat

控制台运行截图

 Django高级扩展之系统后台使用celery

 

新增数据表

Django高级扩展之系统后台使用celery

安装django-celery-results

celery任务的记录要保存到数据库,就需要安装django-celery-results。

执行命令

pip install -U django-celery-results

注册应用

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'myapp',
    'django_celery_beat',
    'django_celery_results',
]

 

创建表

python manage.py migrate

数据库增加表

Django高级扩展之系统后台使用celery

 

如果出现错误

(1071, 'Specified key was too long; max key length is 1000 bytes')

 

解决方法

settings.py中添加

DJANGO_CELERY_RESULTS_TASK_ID_MAX_LENGTH = 191

 

创建后台管理员账号

如果没有创建管理员账号,执行以下命令:

python manage.py createsuperuser

 

创建任务文件

在子应用目录创建tasks.py文件,设置执行方法:

from celery import shared_task
import time


# 用于定时执行的任务
@shared_task
def schedule_execute():
    print("我每隔5秒钟时间执行一次....")

添加任务

登录管理后台Admin:

我们可登录网站后台Admin去添加对应任务。

Django高级扩展之系统后台使用celery

因为配置了语言,所以显示为中文。周期性任务、定时任务、日程事件、计划任务、间隔都可进行定时任务设置。

周期任务

Django高级扩展之系统后台使用celery 

 

启动定时任务 

celery -A project beat -l info

任务每隔5秒就会执行一次,如果配置了存储,

那么每次任务执行的结果也会被保存到对应的数据库中。

总结

主要步骤为:安装三方类库,后台添加定时任务,命令行启动celery队列。文章来源地址https://www.toymoban.com/news/detail-500321.html

到了这里,关于Django高级扩展之系统后台使用celery的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Django使用Celery异步

    安装包 1.在项目文件的根目录下创建目录结果 2. 在main.py文件中  3.config.py文件 4.在项目后端文件下执行启动命令,即可,此时说明clery已经安装成功! 5.在task.py文件中将发送短信的任务注册到task中必须使用装饰器并在装饰器中设置别名便于区分 6.在视图函数中调用异步任务

    2024年02月22日
    浏览(45)
  • redis(其它操作、管道)、django中使用redis(通用方案、 第三方模块)、django缓存、celery介绍(celery的快速使用)

    1 redis其它操作 2 redis管道 3 django中使用redis 3.1 通用方案 3.2 第三方模块 4 django缓存 5 celery介绍 5.1 celery的快速使用

    2024年02月07日
    浏览(50)
  • Django高级扩展之文件上传

    文件上传是一个比较常用的网站功能,在服务器端,Django会使用一个叫作request.FILES的对象来处理上传的文件。 目录 存储路径 创建存储目录 配置settings.py 上传单文件 配置url 上传文件模板 视图方法 显示上传页面 上传文件处理 上传效果 1.选好上传文件 2.点击提交 3.查看上传

    2024年02月09日
    浏览(54)
  • Django(21):使用Celery任务框架

    Django Web项目中我们经常需要执行耗时的任务比如发送邮件、调用第三方接口、批量处理文件等等,将这些任务异步化放在后台运行可以有效缩短请求响应时间。另外服务器上经常会有定时任务的需求,比如清除缓存、备份数据库等工作。Celery是一个高效的异步任务队列/基于

    2024年02月07日
    浏览(36)
  • Django高级扩展之中间件

    中间件是Django请求/响应处理的钩子框架。它是一个轻量级的、低级的“插件”系统,用于全局改变Django的输入或输出。每个中间件组件负责实现一些特定的功能。例如,Django包含一个中间件组件AuthenticationMiddleware,它使用会话将用户与请求关联起来。 目录 方法介绍 __init

    2024年02月10日
    浏览(43)
  • django中使用celery和接口缓存

    celery中要使用djagno的东西,才要加这句话         import os                          os.environ.setdefault(\\\"DJANGO_SETTINGS_MODULE\\\", \\\"luffy_api.settings.dev\\\") 加载django的配置文件,,将app加入到环境变量中 当一个接口是去数据库取东西,返回给前端,比如图片,等,每个人访问都要去数

    2024年02月12日
    浏览(80)
  • 【Django】使用xadmin构建后台管理系统

    在github搜索xadmin并下载源码 由于xadmin报错实在是太多了,我前前后后改了三十多个报错,查阅了数百篇博客以及文献。为了以后不去重复处理报错,我fork了原来的xadmin项目,新建了自己的xadmin版本:MyXadmin,因此我建议你使用该仓库的xadmin版本。 在setting的INSTALLED_APPS中添加

    2024年02月09日
    浏览(54)
  • Django高级扩展之tinymce富文本实现

      目录 安装 在站点中使用 注册富文本应用 添加配置文件 创建模型类 生成迁移文件 执行表迁移 配置站点 富文本不显示解决 修改主题 修改语言设置 自定义视图使用 设置路由 视图 创建模板 总结   安装过程如下:   配置settings.py文件 在settings.py底部添加,配置模式和宽高

    2024年02月10日
    浏览(42)
  • Django高级扩展之Paginator分页实现

    在项目中很常见的一种功能,主要用于大量数据在一页显示过于冗长,分为一页显示多条数据,分隔为多页显示;并常与条件筛选结合使用。 目录 Paginator对象 创建对象 属性 方法 异常 Page对象 创建对象 属性 方法 Paginator与page关系 示例 路由 视图 模板 创建列表页面 设置分页

    2024年02月11日
    浏览(47)
  • Django 如何使用 Celery 完成异步任务或定时任务

    以前版本的 Celery 需要一个单独的库(django-celery)才能与 Django 一起工作, 但从 Celery 3.1 开始,情况便不再如此,我们可以直接通过 Celery 库来完成在 Django 中的任务。 以 Docker 安装为例,安装一个密码为 mypassword 的 Redis 服务端 在 Django 项目中创建一个 celery.py 文件,并配置

    2023年04月25日
    浏览(50)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包