我安装了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'
我不知道如何使用多线程运行烧瓶应用并持续从队列中接收日志。
答案 0 :(得分:1)
您的flask应用程序(这里是主线程)运行一段时间或由uwsgi或您用来运行它的任何其他对象确定的请求数量。当主进程停止时,很可能是错误地时候正常关闭amqp连接。
此外,可能有多个应用程序实例同时运行(请考虑uwsgi processes
),因此您将在每个工作程序/进程上获得一些日志。
这里的理智做法是将这两件事分开。在您的Web应用程序范围之外的日志中运行一个使用者进程,即:使用超级用户。