Python分布式任务队列Celery

这篇具有很好参考价值的文章主要介绍了Python分布式任务队列Celery。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、分布式任务队列Celery介绍

Python celery是一个基于Python的分布式任务队列,主要用于任务的异步执行、定时调度和分布式处理。它采用了生产者/消费者模式,通过消息中间件实现多个工作者进程之间的协作。

Python celery的架构主要包括以下组件:

  1. 生产者:生产者是负责产生消息的对象。在Python celery中,生产者通常是应用程序本身。

  2. 消息中间件:消息中间件是负责存储和传输消息的组件。Python celery支持多种消息中间件,如RabbitMQ、Redis、AMQP等。

  3. 消费者:消费者是负责接收和处理消息的对象。在Python celery中,消费者通常是工作者进程。

  4. 任务调度器:任务调度器是负责定时调度任务的组件。在Python celery中,任务调度器通常是Celery Beat。

Python celery的工作流程如下:

  1. 应用程序通过调用celery的task函数来定义任务。

  2. 应用程序通过调用celery的send_task函数发送任务到消息队列。

  3. 工作者进程从消息队列中接收任务并进行处理。

  4. 工作者进程将任务结果发送回消息队列。

  5. 应用程序从消息队列中接收任务结果并进行处理。

通过Python celery,我们可以轻松实现分布式任务的处理和调度,提高系统的并发能力和稳定性。

二、Linux环境Celery安装部署

命令:pip3 install Celery

[root@localhost python]# pip3 install Celery
Collecting Celery
  Downloading celery-5.1.2-py3-none-any.whl (401 kB)
     |▉                               | 10 kB 11.7 MB/s eta 0:00:0     |█▋                              | 20 kB 13.9 MB/s eta 0:00:0     |██▌                             | 30 kB 18.4 MB/s eta 0:00:0     |███▎                            | 40 kB 595 kB/s eta 0:00:01     |████                            | 51 kB 703 kB/s eta 0:00:01     |█████                           | 61 kB 840 kB/s eta 0:00:01     |█████▊                          | 71 kB 867 kB/s eta 0:00:01     |██████▌                         | 81 kB 889 kB/s eta 0:00:01     |███████▍                        | 92 kB 998 kB/s eta 0:00:01     |████████▏                       | 102 kB 1.0 MB/s eta 0:00:0     |█████████                       | 112 kB 1.0 MB/s eta 0:00:0     |█████████▉                      | 122 kB 1.0 MB/s eta 0:00:0     |██████████▋                     | 133 kB 1.0 MB/s eta 0:00:0     |███████████▍                    | 143 kB 1.0 MB/s eta 0:00:0     |████████████▎                   | 153 kB 1.0 MB/s eta 0:00:0     |█████████████                   | 163 kB 1.0 MB/s eta 0:00:0     |█████████████▉                  | 174 kB 1.0 MB/s eta 0:00:0     |██████████████▊                 | 184 kB 1.0 MB/s eta 0:00:0     |███████████████▌                | 194 kB 1.0 MB/s eta 0:00:0     |████████████████▎               | 204 kB 1.0 MB/s eta 0:00:0     |█████████████████▏              | 215 kB 1.0 MB/s eta 0:00:0     |██████████████████              | 225 kB 1.0 MB/s eta 0:00:0     |██████████████████▊             | 235 kB 1.0 MB/s eta 0:00:0     |███████████████████▋            | 245 kB 1.0 MB/s eta 0:00:0     |████████████████████▍           | 256 kB 1.0 MB/s eta 0:00:0     |█████████████████████▏          | 266 kB 1.0 MB/s eta 0:00:0     |██████████████████████          | 276 kB 1.0 MB/s eta 0:00:0     |██████████████████████▉         | 286 kB 1.0 MB/s eta 0:00:0     |███████████████████████▋        | 296 kB 1.0 MB/s eta 0:00:0     |████████████████████████▌       | 307 kB 1.0 MB/s eta 0:00:0     |█████████████████████████▎      | 317 kB 1.0 MB/s eta 0:00:0     |██████████████████████████      | 327 kB 1.0 MB/s eta 0:00:0     |███████████████████████████     | 337 kB 1.0 MB/s eta 0:00:0     |███████████████████████████▊    | 348 kB 1.0 MB/s eta 0:00:0     |████████████████████████████▌   | 358 kB 1.0 MB/s eta 0:00:0     |█████████████████████████████▍  | 368 kB 1.0 MB/s eta 0:00:0     |██████████████████████████████▏ | 378 kB 1.0 MB/s eta 0:00:0     |███████████████████████████████ | 389 kB 1.0 MB/s eta 0:00:0     |███████████████████████████████▉| 399 kB 1.0 MB/s eta 0:00:0     |████████████████████████████████| 401 kB 1.0 MB/s            
Collecting kombu<6.0,>=5.1.0
  Downloading kombu-5.1.0-py3-none-any.whl (187 kB)
     |█▊                              | 10 kB 20.3 MB/s eta 0:00:0     |███▌                            | 20 kB 33.1 MB/s eta 0:00:0     |█████▎                          | 30 kB 46.0 MB/s eta 0:00:0     |███████                         | 40 kB 3.4 MB/s eta 0:00:01     |████████▊                       | 51 kB 4.0 MB/s eta 0:00:01     |██████████▌                     | 61 kB 4.8 MB/s eta 0:00:01     |████████████▎                   | 71 kB 5.5 MB/s eta 0:00:01     |██████████████                  | 81 kB 6.2 MB/s eta 0:00:01     |███████████████▊                | 92 kB 6.9 MB/s eta 0:00:01     |█████████████████▌              | 102 kB 7.6 MB/s eta 0:00:0     |███████████████████▎            | 112 kB 7.6 MB/s eta 0:00:0     |█████████████████████           | 122 kB 7.6 MB/s eta 0:00:0     |██████████████████████▊         | 133 kB 7.6 MB/s eta 0:00:0     |████████████████████████▌       | 143 kB 7.6 MB/s eta 0:00:0     |██████████████████████████▎     | 153 kB 7.6 MB/s eta 0:00:0     |████████████████████████████    | 163 kB 7.6 MB/s eta 0:00:0     |█████████████████████████████▊  | 174 kB 7.6 MB/s eta 0:00:0     |███████████████████████████████▌| 184 kB 7.6 MB/s eta 0:00:0     |████████████████████████████████| 187 kB 7.6 MB/s            
Collecting click-repl>=0.1.6
  Downloading click_repl-0.3.0-py3-none-any.whl (10 kB)
Collecting click<8.0,>=7.0
  Downloading click-7.1.2-py2.py3-none-any.whl (82 kB)
     |████                            | 10 kB 10.1 MB/s eta 0:00:0     |████████                        | 20 kB 10.4 MB/s eta 0:00:0     |███████████▉                    | 30 kB 14.1 MB/s eta 0:00:0     |███████████████▉                | 40 kB 7.7 MB/s eta 0:00:01     |███████████████████▉            | 51 kB 7.1 MB/s eta 0:00:01     |███████████████████████▊        | 61 kB 8.3 MB/s eta 0:00:01     |███████████████████████████▊    | 71 kB 7.2 MB/s eta 0:00:01     |███████████████████████████████▊| 81 kB 7.9 MB/s eta 0:00:01     |████████████████████████████████| 82 kB 2.7 MB/s             
Collecting billiard<4.0,>=3.6.4.0
  Downloading billiard-3.6.4.0-py3-none-any.whl (89 kB)
     |███▋                            | 10 kB 15.8 MB/s eta 0:00:0     |███████▎                        | 20 kB 25.5 MB/s eta 0:00:0     |███████████                     | 30 kB 34.6 MB/s eta 0:00:0     |██████████████▋                 | 40 kB 42.9 MB/s eta 0:00:0     |██████████████████▎             | 51 kB 3.7 MB/s eta 0:00:01     |██████████████████████          | 61 kB 4.4 MB/s eta 0:00:01     |█████████████████████████▋      | 71 kB 5.0 MB/s eta 0:00:01     |█████████████████████████████▎  | 81 kB 5.7 MB/s eta 0:00:01     |████████████████████████████████| 89 kB 5.4 MB/s             
Collecting click-plugins>=1.1.1
  Downloading click_plugins-1.1.1-py2.py3-none-any.whl (7.5 kB)
Requirement already satisfied: setuptools in /usr/lib/python3.6/site-packages (from Celery) (39.2.0)
Collecting click-didyoumean>=0.0.3
  Downloading click_didyoumean-0.3.0-py3-none-any.whl (2.7 kB)
Collecting vine<6.0,>=5.0.0
  Downloading vine-5.0.0-py2.py3-none-any.whl (9.4 kB)
Collecting pytz>dev
  Downloading pytz-2023.3-py2.py3-none-any.whl (502 kB)
     |▋                               | 10 kB 16.2 MB/s eta 0:00:0     |█▎                              | 20 kB 22.3 MB/s eta 0:00:0     |██                              | 30 kB 31.5 MB/s eta 0:00:0     |██▋                             | 40 kB 39.2 MB/s eta 0:00:0     |███▎                            | 51 kB 5.8 MB/s eta 0:00:01     |████                            | 61 kB 6.7 MB/s eta 0:00:01     |████▋                           | 71 kB 2.3 MB/s eta 0:00:01     |█████▏                          | 81 kB 2.6 MB/s eta 0:00:01     |█████▉                          | 92 kB 2.2 MB/s eta 0:00:01     |██████▌                         | 102 kB 2.4 MB/s eta 0:00:0     |███████▏                        | 112 kB 2.4 MB/s eta 0:00:0     |███████▉                        | 122 kB 2.4 MB/s eta 0:00:0     |████████▌                       | 133 kB 2.4 MB/s eta 0:00:0     |█████████▏                      | 143 kB 2.4 MB/s eta 0:00:0     |█████████▉                      | 153 kB 2.4 MB/s eta 0:00:0     |██████████▍                     | 163 kB 2.4 MB/s eta 0:00:0     |███████████                     | 174 kB 2.4 MB/s eta 0:00:0     |███████████▊                    | 184 kB 2.4 MB/s eta 0:00:0     |████████████▍                   | 194 kB 2.4 MB/s eta 0:00:0     |█████████████                   | 204 kB 2.4 MB/s eta 0:00:0     |█████████████▊                  | 215 kB 2.4 MB/s eta 0:00:0     |██████████████▍                 | 225 kB 2.4 MB/s eta 0:00:0     |███████████████                 | 235 kB 2.4 MB/s eta 0:00:0     |███████████████▋                | 245 kB 2.4 MB/s eta 0:00:0     |████████████████▎               | 256 kB 2.4 MB/s eta 0:00:0     |█████████████████               | 266 kB 2.4 MB/s eta 0:00:0     |█████████████████▋              | 276 kB 2.4 MB/s eta 0:00:0     |██████████████████▎             | 286 kB 2.4 MB/s eta 0:00:0     |███████████████████             | 296 kB 2.4 MB/s eta 0:00:0     |███████████████████▋            | 307 kB 2.4 MB/s eta 0:00:0     |████████████████████▏           | 317 kB 2.4 MB/s eta 0:00:0     |████████████████████▉           | 327 kB 2.4 MB/s eta 0:00:0     |█████████████████████▌          | 337 kB 2.4 MB/s eta 0:00:0     |██████████████████████▏         | 348 kB 2.4 MB/s eta 0:00:0     |██████████████████████▉         | 358 kB 2.4 MB/s eta 0:00:0     |███████████████████████▌        | 368 kB 2.4 MB/s eta 0:00:0     |████████████████████████▏       | 378 kB 2.4 MB/s eta 0:00:0     |████████████████████████▉       | 389 kB 2.4 MB/s eta 0:00:0     |█████████████████████████▍      | 399 kB 2.4 MB/s eta 0:00:0     |██████████████████████████      | 409 kB 2.4 MB/s eta 0:00:0     |██████████████████████████▊     | 419 kB 2.4 MB/s eta 0:00:0     |███████████████████████████▍    | 430 kB 2.4 MB/s eta 0:00:0     |████████████████████████████    | 440 kB 2.4 MB/s eta 0:00:0     |████████████████████████████▊   | 450 kB 2.4 MB/s eta 0:00:0     |█████████████████████████████▍  | 460 kB 2.4 MB/s eta 0:00:0     |██████████████████████████████  | 471 kB 2.4 MB/s eta 0:00:0     |██████████████████████████████▋ | 481 kB 2.4 MB/s eta 0:00:0     |███████████████████████████████▎| 491 kB 2.4 MB/s eta 0:00:0     |████████████████████████████████| 501 kB 2.4 MB/s eta 0:00:0     |████████████████████████████████| 502 kB 2.4 MB/s            
Collecting prompt-toolkit>=3.0.36
  Downloading prompt_toolkit-3.0.36-py3-none-any.whl (386 kB)
     |▉                               | 10 kB 34.5 MB/s eta 0:00:0     |█▊                              | 20 kB 45.2 MB/s eta 0:00:0     |██▌                             | 30 kB 58.9 MB/s eta 0:00:0     |███▍                            | 40 kB 70.9 MB/s eta 0:00:0     |████▎                           | 51 kB 81.3 MB/s eta 0:00:0     |█████                           | 61 kB 91.3 MB/s eta 0:00:0     |██████                          | 71 kB 99.3 MB/s eta 0:00:0     |██████▉                         | 81 kB 105.8 MB/s eta 0:00:     |███████▋                        | 92 kB 113.0 MB/s eta 0:00:     |████████▌                       | 102 kB 118.8 MB/s eta 0:00     |█████████▎                      | 112 kB 118.8 MB/s eta 0:00     |██████████▏                     | 122 kB 118.8 MB/s eta 0:00     |███████████                     | 133 kB 118.8 MB/s eta 0:00     |███████████▉                    | 143 kB 118.8 MB/s eta 0:00     |████████████▊                   | 153 kB 118.8 MB/s eta 0:00     |█████████████▋                  | 163 kB 118.8 MB/s eta 0:00     |██████████████▍                 | 174 kB 118.8 MB/s eta 0:00     |███████████████▎                | 184 kB 118.8 MB/s eta 0:00     |████████████████▏               | 194 kB 118.8 MB/s eta 0:00     |█████████████████               | 204 kB 118.8 MB/s eta 0:00     |█████████████████▉              | 215 kB 118.8 MB/s eta 0:00     |██████████████████▋             | 225 kB 118.8 MB/s eta 0:00     |███████████████████▌            | 235 kB 118.8 MB/s eta 0:00     |████████████████████▍           | 245 kB 118.8 MB/s eta 0:00     |█████████████████████▏          | 256 kB 118.8 MB/s eta 0:00     |██████████████████████          | 266 kB 118.8 MB/s eta 0:00     |███████████████████████         | 276 kB 118.8 MB/s eta 0:00     |███████████████████████▊        | 286 kB 118.8 MB/s eta 0:00     |████████████████████████▋       | 296 kB 118.8 MB/s eta 0:00     |█████████████████████████▍      | 307 kB 118.8 MB/s eta 0:00     |██████████████████████████▎     | 317 kB 118.8 MB/s eta 0:00     |███████████████████████████▏    | 327 kB 118.8 MB/s eta 0:00     |████████████████████████████    | 337 kB 118.8 MB/s eta 0:00     |████████████████████████████▉   | 348 kB 118.8 MB/s eta 0:00     |█████████████████████████████▊  | 358 kB 118.8 MB/s eta 0:00     |██████████████████████████████▌ | 368 kB 118.8 MB/s eta 0:00     |███████████████████████████████▍| 378 kB 118.8 MB/s eta 0:00     |████████████████████████████████| 386 kB 118.8 MB/s            
Collecting cached-property
  Downloading cached_property-1.5.2-py2.py3-none-any.whl (7.6 kB)
Collecting importlib-metadata>=0.18
  Downloading importlib_metadata-4.8.3-py3-none-any.whl (17 kB)
Collecting amqp<6.0.0,>=5.0.6
  Downloading amqp-5.1.1-py3-none-any.whl (50 kB)
     |██████▌                         | 10 kB 21.6 MB/s eta 0:00:0     |█████████████                   | 20 kB 28.1 MB/s eta 0:00:0     |███████████████████▍            | 30 kB 36.1 MB/s eta 0:00:0     |█████████████████████████▉      | 40 kB 41.0 MB/s eta 0:00:0     |████████████████████████████████| 50 kB 11.9 MB/s            
Collecting typing-extensions>=3.6.4
  Downloading typing_extensions-4.1.1-py3-none-any.whl (26 kB)
Collecting zipp>=0.5
  Downloading zipp-3.6.0-py3-none-any.whl (5.3 kB)
Collecting wcwidth
  Downloading wcwidth-0.2.6-py2.py3-none-any.whl (29 kB)
Installing collected packages: zipp, wcwidth, vine, typing-extensions, prompt-toolkit, importlib-metadata, click, cached-property, amqp, pytz, kombu, click-repl, click-plugins, click-didyoumean, billiard, Celery
Successfully installed Celery-5.1.2 amqp-5.1.1 billiard-3.6.4.0 cached-property-1.5.2 click-7.1.2 click-didyoumean-0.3.0 click-plugins-1.1.1 click-repl-0.3.0 importlib-metadata-4.8.3 kombu-5.1.0 prompt-toolkit-3.0.36 pytz-2023.3 typing-extensions-4.1.1 vine-5.0.0 wcwidth-0.2.6 zipp-3.6.0
WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv

三、Python celery分布式任务架构的使用

以下是一个简单的例子,说明Python celery分布式任务架构如何使用:

首先,安装Celery和消息中间件,比如RabbitMQ或Redis。

然后,在Python应用程序中定义任务,例如:

from celery import Celery

app = Celery('tasks', backend='rpc://', broker='pyamqp://guest@localhost//')

@app.task
def add(x, y):
    return x + y

在以上代码中,我们通过Celery创建了一个名为tasks的应用程序,并定义了一个名为add的任务,这个任务会将两个数字相加并返回结果。

接下来,在Python应用程序中调用任务,例如:

from tasks import add

result = add.delay(4, 5)
print(result.get())

在以上代码中,我们通过add.delay函数调用任务,并获取异步执行结果。

最后,在终端中启动工作者进程:

celery -A tasks worker --loglevel=info

在终端中启动Celery Beat(任务调度器):

celery -A tasks beat --loglevel=info

通过以上步骤,我们就可以使用Python celery分布式任务架构来处理任务了。其中,应用程序和工作者进程可以在不同的服务器上运行,通过消息中间件进行通信。

Python分布式任务队列Celery,Python,python文章来源地址https://www.toymoban.com/news/detail-559827.html

到了这里,关于Python分布式任务队列Celery的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • Asynq: 基于Redis实现的Go生态分布式任务队列和异步处理库

    Asynq [1] 是一个Go实现的分布式任务队列和异步处理库,基于redis,类似Ruby的 sidekiq [2] 和Python的 celery [3] 。Go生态类似的还有 machinery [4] 和goworker 同时提供一个WebUI asynqmon [5] ,可以源码形式安装或使用Docker image, 还可以和Prometheus集成 docker run --rm --name asynqmon -p 8080:8080 hibiken/as

    2024年02月14日
    浏览(32)
  • Celery分布式异步框架

    \\\"\\\"\\\" 1)可以不依赖任何服务器,通过自身命令,启动服务(内部支持socket) 2)celery服务为为其他项目服务提供异步解决任务需求的 注:会有两个服务同时运行,一个是项目服务,一个是celery服务,项目服务将需要异步处理的任务交给celery服务,celery就会在需要时异步完成项目的

    2024年02月11日
    浏览(29)
  • 分布式任务调度,定时任务的处理方案

    适用场景: Spring 定时任务是 Spring 框架提供的一种轻量级的任务调度方案,它的特点是简单易用、轻量级。Spring 定时任务的执行是在 单个节点 上进行的,如果需要分布式任务调度,需要自己实现相应的解决方案。 1.导入依赖版本自己控制 2.启动类加上@EnableScheduling 3.编写业

    2023年04月14日
    浏览(43)
  • 分布式、锁、延时任务

    Redis分布式锁-这一篇全了解(Redission实现分布式锁完美方案) ls / / 下有哪些子节点 get /zookeeper 查看某个子节点内容 create /aa “test” delete /aa set /aa “test01” 模式 默认创建永久 create -e 创建临时 create -e /zz “hello zz” create -s 创建 有序节点 create -s -e 临时序列化节点 一次性的监

    2024年02月09日
    浏览(49)
  • 分布式定时任务

    本文引用了谷粒商城的课程 定时任务是我们系统里面经常要用到的一些功能。如每天的支付订单要与支付宝进行对账操作、每个月定期进行财务汇总、在服务空闲时定时统计当天所有信息数据等。 定时任务有个非常流行的框架Quartz和Java原生API的Timer类。Spring框架也可以支持

    2023年04月15日
    浏览(43)
  • 分布式任务调度系统分析

    首先,我们来思考一些几个业务场景: XX 信用卡中心,每月 28 日凌晨 1:00 到 3:00 需要完成全网用户当月的费用清单的生成 XX 电商平台,需要每天上午 9:00 开始向会员推送送优惠券使用提醒 XX 公司,需要定时执行 Python 脚本,清理掉某文件服务系统中无效的 tmp 文件 最开始,

    2023年04月22日
    浏览(47)
  • 分布式消息队列:RabbitMQ(1)

    目录 一:中间件 二:分布式消息队列  2.1:是消息队列 2.1.1:消息队列的优势 2.1.1.1:异步处理化 2.1.1.2:削峰填谷 2.2:分布式消息队列 2.2.1:分布式消息队列的优势 2.2.1.1:数据的持久化 2.2.1.2:可扩展性 2.2.1.3:应用解耦 2.2.1.4:发送订阅  2.2.2:分布式消息队列的应用场景  三:Rabbitmq 3.1:基

    2024年02月08日
    浏览(40)
  • 【分布式技术】消息队列Kafka

    目录 一、Kafka概述 二、消息队列Kafka的好处 三、消息队列Kafka的两种模式 四、Kafka 1、Kafka 定义 2、Kafka 简介 3、Kafka 的特性 五、Kafka的系统架构 六、实操部署Kafka集群  步骤一:在每一个zookeeper节点上完成kafka部署 ​编辑 步骤二:传给其他节点 步骤三:启动3个节点 kafka管理

    2024年01月23日
    浏览(37)
  • 分布式消息队列:Rabbitmq(2)

    目录 一:交换机 1:Direct交换机 1.1生产者端代码:  1.2:消费者端代码: 2:Topic主题交换机  2.1:生产者代码:  2.2:消费者代码:  二:核心特性 2.1:消息过期机制 2.1.1:给队列中的全部消息指定过期时间 2.1.2:给某条消息指定过期时间  2.2:死信队列 绑定: 让交换机和队列进行关联,可以指

    2024年02月08日
    浏览(29)
  • redis实现分布式延时队列

    延时队列是一种特殊的消息队列,它允许将消息在一定的延迟时间后再进行消费。延时队列的主要特点是可以延迟消息的处理时间,以满足定时任务或者定时事件的需求。 总之,延时队列通过延迟消息的消费时间,提供了一种方便、可靠的方式来处理定时任务和定时事件。它

    2024年02月08日
    浏览(35)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包