题
我有一个运行Linux的“设备”(由于缺乏更好的描述)。
目前,我进入框中启动工作。这对我的用户不太友好,因此我正在整理一个简单的Web UI来启动脚本。工作的运行时间为10秒至几个小时。 Web UI需要反映工作的状态。
过去,我通过在服务器上运行一个守护程序,该守护程序在服务器上运行守护程序,该守护程序要查看Spool Directory(或DB表),以获取新的作业请求,催生一个过程,监视该过程并为DB表中的Web UI提供信息或状态文件。然后,Web UI将作业请求删除到Spool DIR(DB)中,并偶尔检查状态文件(DB)。这可能对此任务过大。
对于当前任务,我正在考虑从CGI产卵,并偶尔检查作业在进步或退出时写入的状态文件。
我的问题:这样做的方法更好(更简单/更快/更强大)吗?我应该知道的现有模式或工具吗?
(Python解决方案是理想的。)
谢谢。
解决方案
我在许多项目中这样做。一个网络应用(主要是python/cgi),它催生一个单独的python脚本(使用子进程) 守护自身 做这项工作。然后,Web-App继续发布AJAX请求以检查守护程序进程的进度(我使用简单的TXT文件进行通信,数据库可能会更好)。一个不错的触摸是将最终用户完成后,将其完成(带有检索结果的链接)。这样,用户可以关闭所需数小时的工作的Web浏览器。
其他提示
我不确定我是否正确理解了您的问题,但是我认为您有多个可以同时运行的“作业”,并希望它们在网页上显示是否完成?
启动作业时,网页(例如Python&mod_wsgi)将启动一个可以输入该作业的python脚本,例如,sqlite数据库并运行工作,一旦作业完成,脚本将更新作业的条目标记为完整
状态页面只会显示SQLite的内容。
除了工作ID之外,您还想将其放入数据库,也许开始/结束时间取决于您要在工作状态上显示的内容
在旁注上 - 如果“工作”是汇编,请见面 哈德森