在您继续前进之前,我目前正在一个非常有限的环境中工作。安装额外的dll / exe和其他类似管理员的活动令人沮丧。我完全清楚,本文中描述的一些方法远非最佳实践......
我想开始一个长时间运行的后台进程,用Apache启动/停止。我有一个启用cgi的python脚本,它将运行复杂“作业”所需的所有参数作为输入。在cgi脚本本身中运行这个作业是不可行的 - 因为a)cgi开始的速度很慢,而b)多个同时发出的请求肯定会带来麻烦。 cgi脚本只会将参数输入“作业”数据库。
通常,我会像MSMQ一样设置一些Windows服务。我将有一个Web服务向队列添加一个作业,并且Windows服务将以某个标准间隔轮询队列 - 按顺序处理作业...
我怎样才能在Apache中完成同样的事情?我可以很容易地创建一个python脚本作为后台作业处理器。我的问题是:
任何提示或见解欢迎。
请注意。操作系统是Windows Server 2008
答案 0 :(得分:0)
对于任何想要做类似事情的人来说,这是一个非常糟糕的解决方案。
设置执行该后台处理的Windows计划任务。将它设置为每天运行一次或您想要的任何间隔(这是无关紧要的,正如您将在后续步骤中看到的那样)
在“计划任务”的“设置”选项卡中 - 确保选中“允许按需运行任务”选项。此外,在“如果任务已在运行...”文本下,请确保选中“不要启动新实例”选项。
然后,从cgi脚本 - 可以从命令行(子进程模块)调用计划任务,参见here。使用上面设置的选项 - 如果任务已在运行 - 将忽略任何后续的需求运行。