gpt4 book ai didi

django - 将 Django 服务器发送的事件与数据库后保存一起使用

转载 作者:行者123 更新时间:2023-12-04 11:01:57 25 4
gpt4 key购买 nike

我正在尝试在 Django 框架中实现服务器发送事件(SSE)。我很清楚我可以实现 view像这样:

@csrf_exempt
def event_stream(request):
def eventStream():
yield "data:Server Sent Data\n\n"

response = HttpResponse(eventStream(), content_type="text/event-stream")
response['Cache-Control'] = 'no-cache'
return response

但我想在数据库表中创建新条目时触发 SSE 调用,来自 post_save表中,我如何才能在这里实现这一目标,因为 eventStream这是一个生成器函数。

最佳答案

Django 是围绕请求/响应周期构建的,这意味着它不适用于 websockets 甚至 SSE。在您的示例中,除非您在 View 中使用订阅队列(rabbitmq、redis pubsub)并在信号处理程序中发送数据,否则无法将 post_save 信号传播到 View 。

考虑从服务器推送的其他解决方案:

  • 长轮询
  • Django channels
  • 一个异步解决方案,如 nodejs 或 tornado 代替或与 Django 一起使用
  • 关于django - 将 Django 服务器发送的事件与数据库后保存一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41556439/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com