Django视图中的长而慢的操作会导致超时.Python可以用任何方式来代替AJAX吗?

mik*_*ana 5 python django ajax timeout

我已经编程了一段时间,但DJango和网络编程对我来说是新的.

我在Python视图中执行了很长时间的操作.由于我视图中的local()函数需要很长时间才能返回,因此存在HTTP超时.很公平,我理解那一部分.

将HTTP响应立即返回给我的用户的最佳方法是什么,然后在页面中动态显示某些python代码的结果?我怀疑答案可能在于AJAX,但我不确定客户端上的AJAX如何通过服务器上的Python提供,甚至是人们通常用来做这样的模块.

Dan*_*man 7

Ajax在服务器端不需要任何特定技术.您所需要的只是以某种形式返回响应,客户端的某些Javascript可以理解.JSON在这里是一个很好的选择,因为它很容易在Python中创建(json2.6中有一个库,而Django django.utils.simplejson适用于其他版本).

因此,您需要做的就是将您的数据放入JSON格式,然后像发送任何其他响应一样发送它 - 即将它包装在一个HTTPResponse.


Mai*_*ori 6

一种方法是使用AJAX/JS或常规方式提交任务,在视图的后台启动它并立即返回.然后在客户端使用AJAX/JS定期检查任务是否完成.如果已完成重新加载页面或提供客户端的链接.

客户端"请使用此数据启动任务." - > SERVER

客户端< - "任务已启动!" 服务器

客户端"完成?" - >服务器

客户< - "不." 服务器

客户端"完成?" - >服务器

客户端< - "是的,这是一个可以查看结果的链接"SERVER

虽然在没有客户要求的情况下从服务器向客户端发送数据是可能的,但是,这种技术(称为Comet)在您的情况下并不是必需的.