烧瓶和Azure消息队列

时间:2020-05-14 08:01:04

标签: python flask message-queue

如何在烧瓶上使用azure.servicebus

我试图使用asyncio运行process_queue函数,但是它锁定了REST请求。

现在,我正在尝试使用multiprocessing,但是从不执行print("while True")

我正在寻找使用flask和azure消息队列(或通常的消息队列)的良好实践。

我的代码是:

from multiprocessing import Process

from flask import Flask
from src.flask_settings import DevConfig
from src.rest import health
from src.rest import helloworld
import time

def create_app(config_object=DevConfig):
    app = Flask(__name__)
    app.config.from_object(config_object)

    app.register_blueprint(health.blueprint)
    app.register_blueprint(helloworld.blueprint)

    return app


print("1")
from azure.servicebus import QueueClient, Message

# Create the QueueClient
queue_client = QueueClient.from_connection_string("Endpoint=sb://**********.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=*************", "queue1")


# Receive the message from the queue
def process_queue(sleep_time):
    while True:
        time.sleep(sleep_time)
        print("while True")
        with queue_client.get_receiver() as queue_receiver:
            messages = queue_receiver.fetch_next(timeout=3)
            for message in messages:
                print(message)
                message.complete()
p = Process(target=process_queue, args=(1, ))
p.start()
p.join()

print("2")

谢谢

0 个答案:

没有答案