与来自Web服务器或网页的后端作业进行通信

时间:2009-10-01 15:42:48

标签: python linux backend

我有一个“设备”(缺乏更好的描述)运行linux。

目前我正在进入框中以启动工作。这对我的用户来说不够友好,所以我正在组建一个简单的Web UI来启动脚本。工作运行时间从10秒到几个小时不等。 Web UI需要反映作业的状态。

我过去通过在服务器上运行守护程序来解决类似的问题,该守护程序监视假脱机目录(或db表)以获取新的作业请求,生成进程,监视进程,并提供Web UI的信息。 db表或状态文件。然后,Web UI将作业请求丢弃到假脱机目录(db)中,并偶尔检查状态文件(db)。这可能对此任务来说太过分了。

对于当前任务,我正在考虑从cgi中生成作业,偶尔检查作业在进展或退出时写入的状态文件。

我的问题:是否有更好的(更简单/更快写/更强大)的方法来做到这一点?是否存在我应该了解的现有模式或工具?

(Python解决方案非常理想。)

感谢。

2 个答案:

答案 0 :(得分:2)

我在很多项目中这样做。一个Web应用程序(主要是Python / CGI),它产生一个单独的python脚本(使用子进程),它立即daemonizes itself来完成工作。然后web-app继续发出AJAX请求以检查守护进程进度(我使用简单的txt文件进行通信,数据库可能会更好)。一个不错的方法是让守护程序在完成后通过电子邮件发送给最终用户(带有检索结果的链接)。这样,用户可以在需要数小时的那些作业上关闭他们的Web浏览器。

答案 1 :(得分:0)

我不确定我是否正确理解了你的问题,但我认为你有多个可以同时运行的“工作”并希望他们在网页上显示他们是否完整?

当启动作业时,网页(例如python& mod_wsgi)将启动一个python脚本,该脚本将输入作业,比如说sqlite数据库并运行作业,一旦作业完成,脚本就会更新条目工作,以便将其标记为完整

状态页面只显示来自sqlite的内容。

除了作业ID以及可能的开始/结束时间之外,您想要放入数据库的内容取决于您希望在作业状态网页上显示的内容

在旁注 - 如果“工作”是汇编,请见Hudson