flask 如何使用rabbitMq
时间: 2023-07-20 17:33:07 浏览: 175
使用 RabbitMQ 实现 Flask 应用程序的消息队列功能,一般需要安装 Python 的 RabbitMQ 客户端库 pika。具体步骤如下:
1. 安装 pika 库,可以通过 pip 命令进行安装:
```
pip install pika
```
2. 在 Flask 应用程序中引入 pika 库,并创建 RabbitMQ 的连接和通道对象:
```python
import pika
# 创建连接对象
connection = pika.BlockingConnection(pika.ConnectionParameters('localhost'))
# 创建通道对象
channel = connection.channel()
```
3. 在 Flask 应用程序中定义消息队列的生产者和消费者,并使用 RabbitMQ 的队列来实现消息的传递:
生产者:
```python
# 定义生产者函数
def send_message(message):
# 发送消息到队列
channel.basic_publish(exchange='', routing_key='task_queue', body=message)
print(" [x] Sent %r" % message)
```
消费者:
```python
# 定义消费者函数
def receive_message():
# 声明队列
channel.queue_declare(queue='task_queue', durable=True)
# 定义回调函数
def callback(ch, method, properties, body):
print(" [x] Received %r" % body)
time.sleep(body.count(b'.'))
print(" [x] Done")
ch.basic_ack(delivery_tag=method.delivery_tag)
# 消费消息
channel.basic_qos(prefetch_count=1)
channel.basic_consume(queue='task_queue', on_message_callback=callback)
# 开始消费消息
print(' [*] Waiting for messages. To exit press CTRL+C')
channel.start_consuming()
```
4. 在 Flask 应用程序中调用生产者和消费者函数,实现消息队列的功能:
生产者:
```python
# 发送消息
send_message('Hello, RabbitMQ!')
```
消费者:
```python
# 接收消息
receive_message()
```
注意:RabbitMQ 的队列需要先在 RabbitMQ 服务器上进行创建,可以使用 RabbitMQ 的 Web 界面或者命令行工具进行创建。在生产者和消费者中,需要指定队列名称和消息路由键(routing_key)。另外,为了保证消息的持久性和可靠性,可以将队列设置为持久化队列(durable=True),并在生产者发送消息时设置消息持久化标志(delivery_mode=2)。
阅读全文