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



我目前正在将Django与S3一起使用。创建新对象时,将通过 SQS 发送通知。AWS 文档 我使用 boto3 接收通知。Boto3 文档。我可以使用 receive_message 函数接收消息,但我必须每分钟运行一次该函数以查看是否有新消息可用。有没有办法让消息自动传递到我的 django 应用程序,而不必通过每分钟连续运行一个函数来检索它们以查看是否有新消息? 已交付而不是检索。

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

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

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

S3 可以通过它们来路由通知,或者您可以将它们与 AWS SQS 一起使用以进行其他处理逻辑。

其他不太受欢迎的轮询选项包括使用带有 SQS 的 Celery 作为代理,但这很可能只需要为此代理提供单独的工作线程,这也是定期轮询。或最肮脏的方式 - 查询 S3 API 以获取完整的对象列表并检测新的/修改的。

最新更新