1
我有一个python CGI,它在后台运行一些脚本并在html页面显示stdout。我在用户点击页面中的某个按钮时运行脚本。在CGI背景下运行python脚本
我的问题是当脚本开始运行页面变得繁忙,并且用户不能使用页面中的其他客户端功能。
我想要的是: 脚本应该在后台运行,当用户单击按钮时,应该在运行完成时通知CGI。然后,CGI显示应该运行脚本的标准输出。
如何才能做到这一点?
我有一个python CGI,它在后台运行一些脚本并在html页面显示stdout。我在用户点击页面中的某个按钮时运行脚本。在CGI背景下运行python脚本
我的问题是当脚本开始运行页面变得繁忙,并且用户不能使用页面中的其他客户端功能。
我想要的是: 脚本应该在后台运行,当用户单击按钮时,应该在运行完成时通知CGI。然后,CGI显示应该运行脚本的标准输出。
如何才能做到这一点?
好吧,简答:你不行。
中等答案:CGI很烂。
长答案:CGI通过运行脚本并返回脚本打印到浏览器的任何内容。如果您的脚本仍在运行,浏览器将会等待。如果您的脚本启动后台作业并将数据返回给浏览器,则后台作业将无法通知CGI脚本,因为它已完成。
您必须选择备用解决方案。
将后台作业的结果保存到文件,数据库或其他持久性存储中,并使用户使用页面中的另一个链接请求该数据,该链接运行不同的代码以检索保存的结果并显示他们。
另一种方法是在浏览器中使用AJAX技术。编写JavaScript代码以对后台数据做出请求。所以当脚本运行时,浏览器仍然可以响应其他页面元素。
Thans nosklo。有没有一种方法可以让我的CGI在执行脚本时显示一个加载图标,而不仅仅是看起来很忙? – Cagey 2010-03-17 13:59:03
@Cagey:通常通过使用JavaScript来完成请求(AJAX)。 – nosklo 2010-03-18 03:01:47
感谢您的帮助nosklo。这非常有用:) – Cagey 2010-03-18 06:44:39