gpt4 book ai didi

django - 从角度看Django套接字通信

转载 作者:行者123 更新时间:2023-12-03 12:06:40 25 4
gpt4 key购买 nike

我有一个应用程序,其中有一个请求到达Django View ,并且需要通过socekt与Freeswitch进行通信。我想先打开套接字,因为我需要先进行身份验证,然后保留某种队列,所有 View 都将使用这些队列将请求推送到此套接字中并获取结果。

我在哪里可以初始化这种套接字/队列?我应该使用Celery之类的东西和消息队列来解决此问题吗?

最佳答案

这取决于(我喜欢这样说...),但是认真地说,要设计这样的体系结构,您需要分析很多因素,主要是因为这里有两个问题:

  • 来自freeswitch的响应速度
  • 对freeswitch的查询排队

  • 如果您将拥有一个处理所有请求和零并发的进程-则完全没有问题-您将在整个程序运行期间保持一个套接字打开并在需要时重新打开。但这是不真实的情况。

    如果只能打开一个套接字,则必须有一个队列来处理请求。这意味着,您所有的django代码都必须是异步的,应用程序无法等待答案,而是简单地检查任务状态。

    celery 可以在这里使用,但并不是为了保持套接字打开而设计的,因为 celery 本身可能会产生多个工作进程-因此它们无法轻松地在它们之间共享套接字。使用线程,greenlet等可能会有所帮助,但仍然如此-并非旨在使连接保持打开状态。

    因此,您将获得的是编写自己的守护程序,我建议将其编写为管理命令,该命令可以管理这样的连接并接受来自主应用程序的数据。
    在这种情况下,必须实现队列,因此不需要 celery 。

    关于django - 从角度看Django套接字通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5387940/

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