当前位置: 首页 > article >正文

celery入门

按照Celery 官方文档,用 Django + Celery + Redis 写的一个简单项目

如需转载,标记出处

环境准备

1. 安装依赖

pip install django celery redis

创建 Django 项目

1. 创建 Django 项目和 APP

django-admin startproject myproject

cd myproject

python manage.py startapp myapp

2. 注册 APP

在 myproject/settings.py 中添加 myapp:

INSTALLED_APPS = [

    ...,

    'myapp',

]

配置 Celery

1. 创建 celery.py 文件(项目根目录)

在 myproject/celery.py:

import os

from celery import Celery

# 设置 Django 配置文件路径

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

# 实例化 Celery

app = Celery('myproject')

# 使用 Django 配置

app.config_from_object('django.conf:settings', namespace='CELERY')

# 自动发现任务

app.autodiscover_tasks()

@app.task(bind=True)

def debug_task(self):

    print(f'Request: {self.request!r}')

2. 修改 __init__.py(项目目录 myproject/)

让 Django 项目启动时自动加载 Celery

# 导入 celery 应用

from .celery import app as celery_app

__all__ = ('celery_app',)


Celery 配置(在 settings.py)

# Redis 作为 Broker 和 Backend

CELERY_BROKER_URL = 'redis://localhost:6379/0'

CELERY_RESULT_BACKEND = 'redis://localhost:6379/0'

如果你这里出现了错误,可以看下我的celery报错文章


创建异步任务

myapp/tasks.py 中定义任务

from celery import shared_task

@shared_task

def add(x, y):

    return x + y


视图中调用任务

在 myapp/views.py:

from django.http import JsonResponse

from .tasks import add

def add_task(request):

    # 异步调用 Celery 任务

    result = add.delay(4, 6)

    return JsonResponse({"task_id": result.id})


配置路由

在 myapp/urls.py:

from django.urls import path

from . import views

urlpatterns = [

    path('add/', views.add_task, name='add_task'),

]

在 myproject/urls.py:

from django.contrib import admin

from django.urls import path, include

urlpatterns = [

    path('admin/', admin.site.urls),

    path('', include('myapp.urls')),

]


启动服务

1. 启动 Redis

redis-cli

2. 启动 Django

python manage.py runserver

3. 启动 Celery Worker

celery -A myproject worker --loglevel=info


测试项目

访问异步任务接口:

http://127.0.0.1:8000/add/

相关文章:

celery入门

按照Celery 官方文档,用 Django Celery Redis 写的一个简单项目 如需转载,标记出处 环境准备 1. 安装依赖 pip install django celery redis 创建 Django 项目 1. 创建 Django 项目和 APP django-admin startproject myproject cd myproject python …...

关于xcode Project navigator/项目导航栏的一些说明

本文基于 xcode12.4 版本做说明 首先要明确一点,导航栏这里展示的并不是当前工程在电脑硬盘中的文件结构,它展示的是xxxxxx.xcodeproj/project.pbxproj文件(后文简.pbxproj文件)中的内容。我们在导航栏中的操作就是修改该文件,有些操作会修…...

深度解析扣减系统设计:从架构到实践

背景 在当今数字化业务蓬勃发展的时代,扣减系统在众多业务场景中扮演着关键角色。无论是电商平台的库存扣减,还是金融领域的资金扣减、积分系统的积分扣减,一个高效、可靠且数据一致的扣减系统都是业务稳健运行的基石。本文将深入探讨扣减系…...

视觉定位项目中可以任意修改拍照点位吗?

修改拍照点位不是那么简单 1. 背景2. 修改拍照点位意味着什么?3. 如何解决这个问题? 1. 背景 在视觉定位的项目中,会遇到这么一种情况:完成三步(9点标定,旋转中心标定,示教基准)之…...

深度学习常用操作笔记

深度学习常用操作笔记 指令报错cannot import name Config from mmcvImportError: cannot import name print_log from mmcvImportError: cannot import name init_dist from mmengine.runnerWARNING: Retrying (Retry(total4, connectNone, readNone, redirectNone, statusNon…...

C++学习内存管理

1.概念的介绍 总括: 1. 栈(Stack) 存储内容: 局部变量(包括函数参数、非静态局部变量)。 函数调用的上下文信息(如返回地址、寄存器状态等)。 特点: 内存由编译器自动…...

git使用。创建仓库,拉取分支,新建分支开发

文章目录 安装 git自己新建仓库,进行代码管理合作开发的流程拉去主分支代码查看本地分支的状态查看远程分支查看远程的仓库信息本地分支切换切换并创建分支提交代码 made by NJITZX git 是一个版本控制工具,真正开发项目中是多个人开发一个项目的&#…...

itsdangerous加解密源码分析|BUG汇总

这是我这两天的思考 早知道密码学的课就不旷那么多了 纯个人见解 如需转载,标记出处 目录 一、官网介绍 二、事例代码 源码分析: 加密函数dump源码使用的函数如下: 解密 ​编辑 ​编辑 关于签名: 为什么这个数字签名没有…...

常见限流算法及实现

1. 固定窗口计数器(Fixed Window Counter) 原理:在固定时间窗口(如1分钟)内统计请求数,超过阈值则拒绝后续请求。优点:实现简单,内存占用低。缺点:存在窗口切换时的流量…...

计算机操作系统进程(4)

系列文章目录 第二章:进程的描述与控制 文章目录 系列文章目录前言一、临界区的概念和描述:二、硬件同步机制: 1.关中断2.利用Test-and-Set指令实现互斥3.利用Swap指令实现进程的互斥 总结 前言 上一篇我们仅仅讲了一点关于线程同步的概念&a…...

编程题《牛牛的链表删除》的python可以用非链表的方式

描述 牛牛从键盘输入了一个长度为 n 的数组,把这个数组转换成链表然后把链表中所有值是 x 的节点都删除。 输入描述: 第一行输入两个正整数 n 和 x 表示数组的长度和要删除的链表节点值 x 。 第二行输入 n 个正整数表示数组中每个元素的值。 输出描述&am…...

Certbot实现SSL免费证书自动续签(CentOS 7版 + Docker部署的nginx)

前置安装,可参考Certbot实现SSL免费证书自动续签(CentOS 7 nginx/apache) 如果是通过 Docker 运行 Nginx, certbot 无法直接检测到本地的 Nginx 配置。解决方案是 使用 standalone 模式 或 挂载 Webroot 方式获取 SSL 证书&…...

C++|构造函数和析构函数

一、构造函数 构造函数是一种特殊的成员函数,主要用于创建对象时对对象进行初始化操作,即专门用于构造新对象,并赋值对象的成员数据。 在 C 里,构造函数的名称和类名相同,并且没有返回类型。当创建类的对象时&#x…...

AI日报 - 2025年3月17日

🌟 今日概览(60秒速览) ▎🤖 AGI突破 | GPT-o1在卡内基梅隆大学数学考试中获满分,展示AI数学能力新高度 成本仅5美分/题,推理速度不到1分钟 ▎💼 商业动向 | Figure推出BotQ机器人制造设施&…...

不像人做的题————十四届蓝桥杯省赛真题解析(上)A,B,C,D题解析

题目A:日期统计 思路分析: 本题的题目比较繁琐,我们采用暴力加DFS剪枝的方式去做,我们在DFS中按照8位日期的每一个位的要求进行初步剪枝找出所有的八位子串,但是还是会存在19月的情况,为此还需要在CHECK函数…...

JavaScript 中 call 和 apply 的用法与区别

文章目录 前言一、 call 方法1.1 基本用法1.2 传递多个参数 二、apply 方法2.1 基本用法2.2 传递数组参数 三、call 和 apply 的区别四、实际应用场景4.1 借用方法4.2 继承与构造函数 五、总结 前言 在 JavaScript 中,call 和 apply 是两个非常重要的函数方法&…...

go程序调用k8s pod副本的名称IP手动赋值给configmap的参数

1、创建configmap --- apiVersion: v1 data:config.yaml: >-# config.yamlEtcd:Endpoints:- "etcd-server:2379"Username: ""Password: ""Exchanges:#- Name: "Binance"# Symbol: "BTCUSDT"# WSUrl: "wss://fstr…...

面试系列|蚂蚁金服技术面【1】

哈喽,大家好!今天分享一下蚂蚁金服的 Java 后端开发岗位真实社招面经,复盘面试过程中踩过的坑,整理面试过程中提到的知识点,希望能给正在准备面试的你一些参考和启发,希望对你有帮助,愿你能够获…...

使用傅里叶变换测量声卡的频率失真

文章目录 一、说明二、关于声卡的技术详述三、实验代码获取四、结论 一、说明 假如我希望使用我的声卡来模拟软件无线电,利用声音而不是射频信号。我的声卡能胜任这项任务吗?本文将研究一种技术来找出答案。另外,需要了解音频技术的读者也可…...

Selenium 自动化测试学习总结

大概了解一下即可,现在主要用的自动化工具是 playWright,它可以录制操作。 selenium是老款自动化测试工具,仍有很多可取之处。 安装: pip install selenium即可。然后下载浏览器的驱动包,注意不是浏览器!…...

【HTML5】01-HTML摆放内容

本文介绍HTML5摆放标签的知识点。 目录 1. HTML概念 2. HTML骨架 3. 标签的关系 4. 标题标签 5. 段落标签 6. 换行和水平线 7. 文本格式化标签 8. 图像标签 图像 - 属性 9. 路径 相对路径 绝对路径 10. 超链接标签 11. 音频标签 12. 视频标签 1. HTML概念 HTM…...

内存管理:

我们今天来学习一下内存管理: 1. 内存分布: 我们先来看一下我们下面的图片: 这个就是我们的内存,我们的内存分为栈区,堆区,静态区,常量区; 我们的函数栈帧开辟消耗的内存就是我们…...

设计模式使用Java案例

代码设计要有可维护性,可复用性,可扩展性,灵活性,所有要使用设计模式进行灵活设计代码 创建型 简单工厂模式(Simple Factory) 简单工厂模式(Simple Factory Pattern)是一种创建型…...

Spring Boot拦截器(Interceptor)与过滤器(Filter)深度解析:区别、实现与实战指南

Spring Boot拦截器(Interceptor)与过滤器(Filter)深度解析:区别、实现与实战指南 一、核心概念对比 1. 本质区别 维度过滤器(Filter)拦截器(Interceptor)规范层级Serv…...

模运算的艺术:从基础到高阶的算法竞赛应用

在算法竞赛中,模运算(取模运算)是一个非常重要的概念,尤其在处理大数、防止溢出、以及解决与周期性相关的问题时。C 中的模运算使用 % 运算符,但它的行为和使用场景需要特别注意。 1. 模运算的基本概念 模运算是指求一…...

Java 并发编程——Java BIO NIO Socket编程

参考Java 并发编程——Java BIO NIO Socket编程 BIO:阻塞式编程模型 Socket 服务端编程Socket 客户端编程 NIO:非阻塞式编程模型 NIO 介绍Java 中 NIO 非阻塞式与前面 BIO 阻塞式的区别Java NIO类库包含以下三个核心组件ServerSocketChannel 服务端编程…...

ST电机库电流采样 三电阻单ADC

一、概述 下图是三电阻采样的电路结构 其中流过三相系统的电流I1、I2、I3遵循以下关系: 因此,为了重建流过普通三相负载的电流,在我们可以用以上公式计算的情况下,只需要对三相中的两相进行采样即可。 STM32的ADC可以很灵活的配置成同步采集两路ADC数据,…...

【网络】什么是 IHL(Internet Header Length,首部长度)TTL(Time To Live,生存时间)?

在 IPv4 数据报文中,IHL(Internet Header Length,首部长度)、TTL(Time To Live,生存时间) 和 TIL 涉及到 IP 数据包的结构和生命周期。以下是对它们的详细解释: 📌 1. IH…...

现代密码学 | 具有保密和认证功能的安全方案

1.案例背景 1.1 2023年6月,微软云电子邮件泄露 事件描述: 2023年6月,属于多家美国政府机构的微软云电子邮件账户遭到非法入侵,其中包括了多位高级政府官员的电子邮件。据报道,美国国务院的10个邮件账户中共有6万封电…...

一款基于Python的从常规文档里提取图片的简单工具开发方案

一款基于Python的从常规文档里提取图片的简单工具开发方案 1. 环境准备 安装必需库 pip install python-docx PyMuPDF openpyxl beautifulsoup4 pillow pip install pdfplumber # PDF解析备用方案 pip install tk # Python自带,无需安装工具选择 开发环…...