我有一个python CGI,它在后台运行一些脚本并在html页面中显示stdout。当用户点击页面中的某个按钮时,我会运行脚本。
我的问题是当脚本开始运行时页面变得很忙而用户无法使用页面中的其他客户端功能。
我想要的是: 当用户单击按钮时,脚本应该在后台运行,并且应该在运行完成时通知CGI。然后CGI show应该运行脚本的stdout。
如何做到这一点?
答案 0 :(得分:2)
长答案:CGI的工作原理是运行脚本并将脚本打印的内容返回给浏览器。如果您的脚本仍在运行,浏览器将等待。如果脚本启动后台作业并将数据返回给浏览器,则后台作业无法通知CGI脚本,因为它已经完成。
您必须选择其他解决方案。
将后台作业的结果保存到文件,数据库或其他一些持久存储中,并让用户使用页面中的另一个链接请求该数据,该链接运行不同的代码来检索保存的结果并显示它们
另一种方法是在浏览器中使用AJAX技术。编写javascript代码以在后台对数据执行请求。因此,当脚本运行时,浏览器仍然可以响应其他页面元素。