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分布式任务架构来处理任务了。其中,应用程序和工作者进程可以在不同的服务器上运行,通过消息中间件进行通信。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/40831.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

transformer Position Embedding

这是最近一段很棒的 Youtube 视频&#xff0c;它深入介绍了位置嵌入&#xff0c;并带有精美的动画&#xff1a; Transformer 神经网络视觉指南 -&#xff08;第 1 部分&#xff09;位置嵌入 让我们尝试理解计算位置嵌入的公式的“sin”部分&#xff1a; 这里“pos”指的是“单词…

SQL性能规范

一、随聊 记录一下吧&#xff0c;2023年7月13日00:11:11&#xff0c;现在的状态真的很&#xff0c;忙&#xff0c;干不完的活&#xff0c;希望巨大的压力&#xff0c;能够让自己快速成长&#xff0c;回想我这一路&#xff0c;21年大专毕业&#xff0c;用一年时间熟悉软件&…

使用selenium模拟登录解决滑块验证问题

目录 1.登录入口 2.点击“账号密码登录” 3.输入账号、密码并点击登录 4.滑块验证过程 5.小结 本次主要是使用selenium模拟登录网页端的TX新闻&#xff0c;本来最开始是模拟请求的&#xff0c;但是某一天突然发现&#xff0c;部分账号需要经过滑块验证才能正常登录&#x…

【个人笔记】对linux中一切皆文件的理解与ls命令

目录 Linux中一切皆文件ls命令常用参数常用命令lscpu lspci Linux中一切皆文件 理解参考&#xff1a;为什么说&#xff1a;Linux中一切皆文件&#xff1f; ls命令 ls&#xff08;英文全拼&#xff1a; list directory contents&#xff09;命令用于显示指定工作目录下之内容…

javascript 导出表格的excel

一个php网站的表格,需要增加导出excel的功能, 因对web开发不甚了解,开始想着用php导出, 搜索一番发现比较复杂,而且我的表格里已经有数据了, 如果导出又要去库中获取一次,不是负担加倍, 可否把现有表格数据,直接导出来? 答案是肯定的,用js在前端导出 开源js组件…

Camtasia Studio 2023保存为mp4格式的视频的详细教程,Camtasia的视频导出功能

很多用户刚接触Camtasia Studio&#xff0c;不熟悉如何保存mp4格式的视频。在今天的文章中小编为大家带来了Camtasia Studio 2023保存为mp4格式的视频的详细教程介绍。 1、 打开Camtasia Studio。 Camtasia Studio- 2023 win&#xff1a; https://souurl.cn/1JFEsn Camtasia …

【C++学习记录】(二)--一个C++工程文件里有哪些东西?

写在前面 首先&#xff0c;我有一个完整的C工程文件&#xff0c;文件分别是包含Debug、include、Service和src。 1.了解文件结构: 首先&#xff0c;查看每个文件夹中的内容以了解文件的组织结构。Debug文件夹通常包含与调试相关的文件&#xff0c;include文件夹可能包含头文件…

数据库复习

select 查询 字段别名用 as (可以为中文) 例如 select distinct 关键字 去重复值 例如select distinct deptno from test where 条件过滤 and or 和 not运算符 and同时成立 or有一个成立就可以了 优先级and>or>not不符合&#xff08;!&#xff09; in 匹配多个值 selec…

个人号的微信API接口,微信机器人二次开发

前段时间应公司需求&#xff0c;要开发一套自定义的微信机器人&#xff0c;具体需求是可以自己批量添加好友、批量打标签等进行好友管理&#xff0c;社群管理需要自动聊天&#xff0c;自动回复&#xff0c;发朋友圈&#xff0c;转发语音&#xff0c;以及定时群发等&#xff0c;…

Redis简介(1)

⭐ 作者简介&#xff1a;码上言 ⭐ 代表教程&#xff1a;Spring Boot vue-element 开发个人博客项目实战教程 ⭐专栏内容&#xff1a;个人博客系统 ⭐我的文档网站&#xff1a;http://xyhwh-nav.cn/ 文章目录 Redis简介1、NoSQL1.1、什么是NoSQL&#xff1f;1.2、NoSQL 特点…

Python实现HBA混合蝙蝠智能算法优化循环神经网络分类模型(LSTM分类算法)项目实战

说明&#xff1a;这是一个机器学习实战项目&#xff08;附带数据代码文档视频讲解&#xff09;&#xff0c;如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 蝙蝠算法是2010年杨教授基于群体智能提出的启发式搜索算法&#xff0c;是一种搜索全局最优解的有效方法…

python实现接口压力测试

python实现接口压力测试 直接上代码&#xff1a; # -*- coding: utf-8 -*-import json import requests import logginglogging.basicConfig(levellogging.INFO, format%(asctime)s - %(name)s - %(levelname)s - %(message)s) logger logging.getLogger(__name__)restime …

ES系列--文档处理

一、文档冲突 当我们使用 index API 更新文档 &#xff0c;可以一次性读取原始文档&#xff0c;做我们的修改&#xff0c;然后重 新索引 整个文档 。 最近的索引请求将获胜&#xff1a;无论最后哪一个文档被索引&#xff0c;都将被唯一存 储在 Elasticsearch 中。如果其他人同时…

15 大模型训练 内存优化

先看GPU结构&#xff0c;我们常说显存的时候&#xff0c;说的一般就是Global memory 训练的过程中&#xff0c;我们为了反向传播过程&#xff0c;必须将中间的结果&#xff08;激活值&#xff09;存储下来。 在训练的过程中&#xff0c;那些会消耗内存呢&#xff1f; model we…

Centos 8 / TencentOS Server 3.1 安装 docker-ce

目录 前言安装 docker-ce设置Docker Hub 镜像缓存参考 前言 TencentOS Server 3.1(与 CentOS 8用户态完全兼容&#xff0c;配套基于社区5.4 LTS 内核深度优化的 tkernel4版本) 安装 docker-ce 先卸载老版本&#xff0c;没有老版本的跳过 yum remove docker \docker-client \d…

行为型模式 - 命令模式

概述 日常生活中&#xff0c;我们出去吃饭都会遇到下面的场景。 定义&#xff1a; 将一个请求封装为一个对象&#xff0c;使发出请求的责任和执行请求的责任分割开。这样两者之间通过命令对象进行沟通&#xff0c;这样方便将命令对象进行存储、传递、调用、增加与管理。 结构 …

MyBatis PostgreSQL实现数组类型的操作

我的GitHub&#xff1a;Powerveil GitHub 我的Gitee&#xff1a;Powercs12 (powercs12) - Gitee.com 皮卡丘每天学Java 最近在学习数据库PostgreSQL&#xff0c;遇到如何实现对数组类型的数据操作&#xff0c;试着自己尝试学习实现。 话不多说&#xff0c;直接撸代码。 建表…

云计算之OpenStack核心

云计算之OpenStack核心 一、OpenStack架构1.1 OpenStack概念架构1.2 OpenStack逻辑架构1.3 拓扑部署1.4 使用OpenStack CLI1.4.1 OpenStack 服务都有自己的 CLI 二、OpenStack核心服务2.1 认证服务Keystone2.1.1 基本功能2.1.2 基本概念2.1.3 举例说明&#xff1a;admin用户查看…

【从零开始学习CSS | 第三篇】选择器优先级

目录 前言&#xff1a; 常见选择器的优先级&#xff08;从高到低&#xff09; 选择器的权重&#xff1a; 总结&#xff1a; 前言&#xff1a; 在前几篇文章中我们介绍了大量的选择器&#xff0c;那么大量的选择器在使用的时候&#xff0c;一定是有一个优先级顺序的&#xff…

Haystack:建立端到端的NLP应用程序的工具箱

Haystack是一个端到端的自然语言处理&#xff08;NLP&#xff09;框架&#xff0c;可以使用语言模型、Transformer模型、向量搜索等功能来构建NLP应用程序。无论您想进行问题回答、答案生成、语义文档搜索&#xff0c;还是构建能够进行复杂决策和查询解决的工具&#xff0c;都可…