Django - S3 - SQS 交付而不是检索

Django - S3 - SQS Delivery Instead of Retrieving

我目前正在将 Django 与 S3 结合使用。创建新对象时,会通过 SQS 发送通知。AWS documentation I'm receiving the notification by using boto3. Boto3 documentation。我可以使用 receive_message 函数接收消息,但我必须每分钟 运行 该函数查看是否有新消息可用。有没有办法让消息自动传送到我的 django 应用程序,而不是必须每分钟连续 运行 调用一个函数来检索它们以查看是否有新消息?已送达而非取回。

要在 django 应用程序中接收通知,您可能需要 api 端点来接收 http 通知 - django View(带身份验证)。

将通知作为 HTTP POST 请求从 AWS 发送到您的 api 可以通过多种方式完成:

  • with AWS SNS - 创建主题、订阅您的应用程序、从 S3/SQS 发布消息
  • with AWS Lambda - 添加简单的 lambda 函数使 http post 到您的 api(即使用 js 和 axios)

S3 可以通过它们路由通知,或者您可以将它们与 AWS SQS 一起使用以实现额外的处理逻辑。

其他不太受欢迎的轮询选项包括使用 Celery with SQS as broker 但这很可能需要单独的工作人员专门为该经纪人提供,这也是定期轮询。或最肮脏的方式 - 查询 S3 api 以获取完整的对象列表并检测新的/修改的。