2010-03-17 124 views
1

我有一个python CGI,它在后台运行一些脚本并在html页面显示stdout。我在用户点击页面中的某个按钮时运行脚本。在CGI背景下运行python脚本

我的问题是当脚本开始运行页面变得繁忙,并且用户不能使用页面中的其他客户端功能。

我想要的是: 脚本应该在后台运行,当用户单击按钮时,应该在运行完成时通知CGI。然后,CGI显示应该运行脚本的标准输出。

如何才能做到这一点?

回答

2

好吧,简答:你不行。

中等答案:CGI很烂。

长答案:CGI通过运行脚本并返回脚本打印到浏览器的任何内容。如果您的脚本仍在运行,浏览器将会等待。如果您的脚本启动后台作业并将数据返回给浏览器,则后台作业将无法通知CGI脚本,因为它已完成。

您必须选择备用解决方案。

将后台作业的结果保存到文件,数据库或其他持久性存储中,并使用户使用页面中的另一个链接请求该数据,该链接运行不同的代码以检索保存的结果并显示他们。

另一种方法是在浏览器中使用AJAX技术。编写JavaScript代码以对后台数据做出请求。所以当脚本运行时,浏览器仍然可以响应其他页面元素。

+0

Thans nosklo。有没有一种方法可以让我的CGI在执行脚本时显示一个加载图标,而不仅仅是看起来很忙? – Cagey 2010-03-17 13:59:03

+0

@Cagey:通常通过使用JavaScript来完成请求(AJAX)。 – nosklo 2010-03-18 03:01:47

+0

感谢您的帮助nosklo。这非常有用:) – Cagey 2010-03-18 06:44:39