同时从 Rabbitmq 接收日志并运行您的烧瓶应用程序



我已经安装了 rabbitmq 并正常工作,我知道如何接收日志,但不知道如何用烧瓶向 UI 显示它。

flask_app.py

from flask import Flask
from threading import Thread
app = Flask(__name__)
import pika
connection = pika.BlockingConnection(pika.ConnectionParameters(host='localhost'))
channel = connection.channel()
channel.exchange_declare(exchange='logs',
type='fanout')
result = channel.queue_declare(exclusive=True)
queue_name = result.method.queue
channel.queue_bind(exchange='logs',
queue=queue_name)
print('[*] Waiting for logs. To exit press CTRL+C')
def callback(ch, method, properties, body):
print(body)
channel.basic_consume(callback,
queue=queue_name,
no_ack=True)
thread = Thread(channel.start_consuming())
thread.start()
@app.route('/')
def index():
return 'hi'

我不知道如何使用多线程来运行烧瓶应用程序并不断从队列接收日志。

您的烧瓶应用程序(此处为主线程(运行一定时间或请求量,具体取决于您的 uwsgi 或您用于运行它的任何其他内容。当主进程停止时,很可能是正常关闭 amqp 连接的错误时间。

此外,可能有多个应用程序实例同时运行(想想 uwsgiprocesses(,因此您将获得每个工作器/进程的日志位。

这里的理智方法是将这两件事分开。在 Web 应用程序范围之外为日志运行使用者进程,即:受监督。

相关内容

最新更新