Python Django—将进程内文本从服务器返回到JQuery的最佳方法?

Python Django—将进程内文本从服务器返回到JQuery的最佳方法?,python,django,django-rest-framework,httpresponse,Python,Django,Django Rest Framework,Httpresponse,我正在为一个有趣的项目构建一个web应用程序/游戏。在应用程序中,用户可以启动服务器端功能,在后端执行一些进程。有时这可能需要几分钟的时间,所以我正在尝试解决如何将文本从Django返回到前端,而不必从后端完全“返回”到前端。有什么好办法吗?我尝试过StreamingHttpResponse,但没有弄明白,甚至不确定它是否是正确的解决方案。下面是我的流程的示例 当前状态 用户点击网站上的按钮,就会有一个对 Django函数 这个Django函数调用~4个子函数,每个子函数执行特定的操作 加工

我正在为一个有趣的项目构建一个web应用程序/游戏。在应用程序中,用户可以启动服务器端功能,在后端执行一些进程。有时这可能需要几分钟的时间,所以我正在尝试解决如何将文本从Django返回到前端,而不必从后端完全“返回”到前端。有什么好办法吗?我尝试过StreamingHttpResponse,但没有弄明白,甚至不确定它是否是正确的解决方案。下面是我的流程的示例

当前状态

  • 用户点击网站上的按钮,就会有一个对 Django函数

  • 这个Django函数调用~4个子函数,每个子函数执行特定的操作 加工

  • 完成所有子功能后(~2分钟的静态 前端),Django返回HTTPResponse of success并触发 刷新前端页面
所需状态

  • 用户点击网站上的按钮,就会有一个对Django函数的Ajax post调用

  • 这个Django函数调用4个子函数,每个子函数都执行特定的处理

  • 子功能1完成后(~30秒),一条消息返回到前端,说“X进程完成,此期间完成25%”

  • 子功能2完成后(~30秒),一条消息返回到前端,说“Y进程完成,此期间完成50%”。。。其他功能等

  • 完成所有子函数后,Django返回HTTPResponse of success并触发前端页面刷新


谢谢

实际上,您正在尝试进行客户机-服务器通信。有许多策略可以实现这一点:

  • WebSocket、聊天协议、物联网协议等。
Django
中,有一个名为
channels
的不错的包来实现:

  • 回答惰性URI资源
策略可能是立即回答问题
HTTPResponse
,该URI将在资源可用时为其提供服务(带有安全令牌)。您还可以公开另一个端点,前端可以在需要了解处理进度时调用它,并给出它的令牌

  • 异步工作负载
据我所知,您同步进行了处理,在所有处理任务期间阻塞了HTTP应答。实际上,使用超时策略可能会有问题

最后,如果您想扩展您的应用程序,您可能希望将纯粹应答HTTP请求和长时间处理工作负载分开


为此,您可能需要异步处理,
芹菜
是python的天然候选对象。

实际上,您正在尝试进行客户机-服务器通信。有许多策略可以实现这一点:

  • WebSocket、聊天协议、物联网协议等。
Django
中,有一个名为
channels
的不错的包来实现:

  • 回答惰性URI资源
策略可能是立即回答问题
HTTPResponse
,该URI将在资源可用时为其提供服务(带有安全令牌)。您还可以公开另一个端点,前端可以在需要了解处理进度时调用它,并给出它的令牌

  • 异步工作负载
据我所知,您同步进行了处理,在所有处理任务期间阻塞了HTTP应答。实际上,使用超时策略可能会有问题

最后,如果您想扩展您的应用程序,您可能希望将纯粹应答HTTP请求和长时间处理工作负载分开

为此,您可能需要异步处理,
芹菜
是python自然的候选对象