Celery 使用 Python 教程:Python 开发者必学的技术2025年3月17日 | 阅读 8 分钟 在本教程中,我们将讨论 Python 开发者最受欢迎、必学且必备的技术。Python 开发者社区中的每个人都听说过 Celery,或者至少实现过一次。 在快速互联网时代,用户希望页面即时加载,并在几秒钟内获得结果。小任务可以在一秒或微秒内完成,但繁重的任务可能需要几秒钟甚至几分钟。 那么问题来了,如何在我们复杂的任务仍在加载时,提供快速的用户体验呢? 这就是异步编程发挥作用的地方。Celery 用于任务的并行执行。 Celery 提供了在 CPU 空闲时在后台运行程序/作业的功能。在深入探讨此主题之前,让我们先了解 Celery 的核心概念以及为什么使用它。 在本教程中,我们将讨论 Celery 的以下概念。
什么是 Celery?Celery 是一个开源的 Python 库,用于异步运行任务。它是一个任务队列,负责收集任务并以适当的方式分发给工作节点。它主要专注于实时操作,但也支持调度(运行定期任务)。它极大地增强了最终用户的体验。Celery 引入了多种消息代理,如 RabbitMQ 和 Redis。 Celery 集成了各种 Web 框架,包括 Flask、Pylons、web2py、Tryton 和 Tornado。 它有什么用?假设我们需要每分钟(或每小时)访问一次 API,或者我们想在一天结束时发送多封电子邮件。Celery 可以轻松地调度这类周期性任务。 让我们再举一个例子:用户发送一个请求,而页面加载时间过长。此时,Celery 通过在同一服务器或有时在不同服务器上运行部分功能作为延迟任务来减少页面加载时间。 Celery 的工作节点可以通过回调更新 UI,处理文件,发送电子邮件,更改数据库等等。 Celery 的主要优点是我们的应用程序可以继续响应客户端请求。因此,最终用户不必不必要地等待。 Celery 如何工作?在传统的 HTTP 请求-响应周期中,当客户端向服务器发送请求时,服务器将响应发送回客户端。这对于小型任务来说工作正常,但在尝试加载大型任务时可能会变慢。因此,我们需要实现一项功能来减少加载时间。 让我们了解 Celery 的工作场景。 Celery 通过消息进行交互;通常,代理充当客户端和工作节点之间的中介。Celery 的内部工作遵循生产者-消费者模式。Celery 在高层次上有三个主要组件。 生产者 - 生产者是管理 Web 请求的“Web 节点”。当应用程序处理时,任务会被分配给 Celery,即被推入任务队列。 消费者 - 消费者是“工作节点”,它们监控队列头部,工作节点获取任务并执行它们。工作节点还可以执行各种任务;因此,它们也可以充当生产者。 队列 - 它基本上是一个消息代理,充当生产者和消费者之间的桥梁。它本质上是在 Web 应用程序和 Celery 工作节点之间传递消息。Celery 对 RabbitMQ 和 Redis 有广泛的支持,也支持 Zookeeper、Amazon SQS,但功能有限。 Celery 的特点Celery 是一个方便的框架,通过延迟任务来减少生产负载,因为它支持异步和计划任务。以下是 Celery 的一些重要特性。
Celery 入门在本教程中,我们将使用 Django 实现 Celery,并创建一个简单的任务队列。让我们按照以下步骤开始。 创建 Django 项目首先,我们将在 celery_django 文件夹中创建一个名为 learn_celery 的 Django 项目。但首先,我们将创建一个虚拟环境。所有依赖项都将存储在虚拟环境中。 C:\Users\User\Desktop\celery_django>python -m venv myenv 创建虚拟环境后,我们将使用以下命令激活它。 C:\Users\User\Desktop\celery_django>myenv/bin/activate 使用以下命令安装 Django。 pip install django安装 Django 后,创建一个项目。我们使用以下命令创建了一个名为 learn_celery 的项目。 C:\Users\User\Desktop\celery_django>django-admin startproject learn-celery 如果您不熟悉如何在 Django 中创建项目或应用,可以访问我们的Django 教程。 现在,我们准备在虚拟环境中安装 Celery。 安装我们可以使用以下命令安装 Celery。 pip install celery 安装 celery 后,我们将配置 Django 项目中的 Celery。 Celery 配置打开项目的 settings.py 文件并添加以下配置。我们使用 redis 作为消息代理。 # Celery Settings CELERY_BROKER_URL = 'redis://127.0.0.1:6379' CELERY_ACCEPT_CONTENT = ['application/json'] CELERY_RESULT_SERIALIZER = 'json' CELERY_TASK_SERIALIZER = 'json'CELERY_TIMEZONE = 'Asia/Kolkata' 选择代理代理是允许应用程序、系统和服务进行通信和共享信息的独立服务。为了简化这个术语,我们通过消息队列将任务分配给工作节点。消息队列是一种先进先出 (FIFO) 的数据结构,这意味着最先放入的消息将最先执行。所有任务都将按照我们添加它们的顺序执行。 在本教程中,我们将使用 Redis Message Broker。 在 Windows 上安装 Redis 在 Mac/Ubuntu 上安装 Redis 非常直接,但在 Windows 上则有点棘手。因此,这里我们描述如何在 Windows 上安装 redis。
运行 celery 程序还需要 redis 依赖。我们可以使用以下命令安装 redis 依赖。 pip install redis 安装完成后,使用以下命令启动服务器。 redis-server 我们可以在终端中输入以下命令来测试 Redis 是否正常工作。 redis-cli ping 如果它回复 PONG,则表示正常工作。 PS D:\celery> redis-cli ping PONG 注意 - Celery 和 Redis 可以使用下面的命令一起安装。pip install -U Celery[Redis] 创建 celery.py 文件现在,打开 Django 项目中的 celery.py 文件并添加以下代码。 Celery.py 创建 Celery 任务Celery 任务可以在 Django 应用/项目的 tasks.py 文件中创建。我们使用以下命令在工作目录中创建一个应用。 创建应用程序后,创建一个 task.py 文件并创建任务。任务是可以通过 Celery 调用的常规 Python 函数。例如 - 我们创建一个打印 1 到 10 整数的函数。 现在,在 view.py 文件中创建一个视图。 view.py 现在我们将此视图映射到 urls.py 文件中的 URL。 CeleryApp/urls.py 注意 - 要查看 celery 结果,请安装以下第三方应用并在 settings.py 文件中注册。现在我们准备执行第一个异步任务。现在运行 python manage.py runserver 并点击本地主机链接 http://127.0.0.1:8000/。 本地运行 Celery现在打开新终端并导航到项目目录,激活虚拟环境。要启动 celery 工作节点,请运行以下命令。 正如我们所见,我们的 Celery 已启动并准备好执行后台作业。Redis 消息代理默认运行在 6379 端口。 每次我们访问 http://127.0.0.1:8000/ 向 Django 服务器发出请求时,我们都应该看到响应,并且 Celery 在后台异步执行了我们在 task.py 文件中定义的任务。这可以在 Celery 终端中进行监控。 ![]() 结论Celery 是一个强大的作业队列,用于在后台运行任务。它最常用于发送频繁的电子邮件。但是,它也可以以多种方式使用。我们可以设置一个队列;处理长期任务中的数据块,并定义执行任务的时间。 在本教程中,我们以 Django 为例,提供了一个简单的 Celery 示例。我们定义了 Celery 的基本概念及其工作原理。我们还指定了如何将 Celery 与 Django 一起实现。您可以参考本教程并使用 Celery 运行您的异步任务。 |
在本教程中,我们将学习如何在 Python 中实现接口。通常,接口不是 Python 的一部分,但我们可以使用 ABC 模块实现它。我们将了解接口如何工作以及 Python 接口创建的注意事项。接口起着至关重要的作用...
7 分钟阅读
首先,让我们了解一下 URL 缩短器是什么。自互联网诞生以来,用户一直依赖连接作为其主要的交通方式。URL 缩短是一种 Web 方法,用于使统一资源定位符 (URL) 显著缩短,同时仍然指向...
阅读 26 分钟
简介:在本文中,我们将讨论 Python 解析时间戳。在数据库中保存日期和实例的最常见方式是使用时间戳。如果您在将日期和时间存储在数据库之前收到的是字符串格式,请先将日期转换为...
阅读 3 分钟
随机学习是一种流行的技术,用于机器学习中以提高模型的性能和效率。这种方法中最常用的算法之一是多层感知器 (MLP) 分类器。在本文中,我们将比较 MLP 分类器的不同随机学习策略...
阅读 6 分钟
TextaCy:一个用于 Python 的 NLP 库 “自然语言处理”(NLP)是人工智能的一个子领域,它处理人类表达的生成、准备和分析。这是一个发展迅速的领域,近年来发展显著。许多库和框架,...
阅读 4 分钟
简介:借助 Python 包 anytree,使用树数据结构变得轻而易举。它使得在 Python 脚本中构建、导航、处理和可视化树结构变得简单。该库提供了一个灵活且可扩展的 API,允许您处理各种类型...
阅读 3 分钟
介绍:商品或服务的需求不断变化。如果不能有效预测客户需求和产品/服务的未来销售额,任何公司都无法提高其财务绩效。销售预测预测特定产品在预定时间范围内的需求或销售额。我将演示机器学习如何...
阅读 15 分钟
| Python 的 urllib.request 用于 HTTP 请求 在本教程中,我们将学习 Python urllib.request 并向示例 URL 发出 GET 请求。我们还将向示例 REST API 发出 GET 请求以获取一些 JSON 数据。我们还将学习...
阅读9分钟
在本教程中,我们将介绍如何使用线性回归创建模型,以预测经济活动导致的房价。本教程将涵盖相关主题,如探索性分析、逻辑诊断和高级回归建模。让我们立即开始...
阅读 15 分钟
在本教程中,我们将学习如何将人类语言文本转换为类似人类的语音。有时我们更喜欢听内容而不是阅读。我们可以在听关键文件数据时进行多任务处理。Python 提供了许多 API 将文本转换为语音。这个...
阅读 4 分钟
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India