【问题标题】:How to listen to AWS SQS messages on Flask app start?如何在 Flask 应用程序启动时收听 AWS SQS 消息?
【发布时间】:2020-01-30 02:14:16
【问题描述】:

我有一个Flask 应用程序,它需要对从AWS SQS 接收到的消息进行一些操作。我使用Docker 容器和boto3 库模仿了SQS

但我不知道如何在Flask app 启动后立即开始接收消息。

收听来自SQS 队列的消息的更好方法是什么?我尝试创建一个视图函数,该函数在命中特定端点时开始收听SQS 消息。但是烧瓶应用启动后我无法到达端点。

如果有更好的方法来解决这个问题,请告诉我。

【问题讨论】:

    标签: flask listener boto3 message-queue amazon-sqs


    【解决方案1】:

    一种方法(我喜欢的方法)是运行一个单独的进程来监听 SQS,通过 HTTP 将消息转发到 Flask 应用程序。

    另一种方法是将 Flask 应用程序和 SQS 侦听器作为单独的线程在单个进程中运行。这是可行的,但要复杂得多。

    【讨论】:

    • 我明白你的意思是在 AWS 中有一个类似于 lambda 的东西,它发布到 Flask “/receive” 路由,对吗?当处理合理数量的消息时(比如每 5-10 秒左右有 50-100 条消息),并且处理速度不那么快,服务器不会中断吗?目前我一直在处理一个线程,但想转向一个更可持续(且易于维护)的选项......谢谢!
    • 如果您使用 wsgi 服务器(例如 gunicorn、uwsgi)来部署您的应用程序,您可以(在可用资源范围内)安排运行 Flask 应用程序的多个进程,甚至启用多个线程。您需要多少取决于“不那么快”的含义。
    • 谢谢,目前正在使用 uWSGI。对于每条消息,我的处理可能需要 10-20 秒。所以不太确定服务器需要多强大(CPU 和 RAM 方面)才能允许这么多进程/线程。想象一下,这会给服务器带来沉重的负担......
    猜你喜欢
    • 2017-05-29
    • 2017-07-12
    • 2021-12-18
    • 2020-01-12
    • 1970-01-01
    • 2019-11-11
    • 1970-01-01
    • 1970-01-01
    • 2020-10-28
    相关资源
    最近更新 更多