Python Apache—在后台运行长时间运行的进程

Python Apache—在后台运行长时间运行的进程,python,apache,background-process,Python,Apache,Background Process,在你继续之前,我目前在一个非常有限的环境中工作。安装额外的dll/exe和其他类似管理的活动非常困难。我完全知道,这篇文章中描述的一些方法远远不是最佳实践 我想启动一个使用Apache启动/停止的长时间运行的后台进程。我有一个支持cgi的python脚本,它将运行复杂“作业”所需的所有参数作为输入。在cgi脚本本身中运行此作业是不可行的,因为a)cgi开始时已经很慢,b)多个同时请求肯定会造成麻烦。cgi脚本只会将参数输入到“作业”数据库中 通常,我会在Windows服务中设置MSMQ之类的东西

在你继续之前,我目前在一个非常有限的环境中工作。安装额外的dll/exe和其他类似管理的活动非常困难。我完全知道,这篇文章中描述的一些方法远远不是最佳实践

我想启动一个使用Apache启动/停止的长时间运行的后台进程。我有一个支持cgi的python脚本,它将运行复杂“作业”所需的所有参数作为输入。在cgi脚本本身中运行此作业是不可行的,因为a)cgi开始时已经很慢,b)多个同时请求肯定会造成麻烦。cgi脚本只会将参数输入到“作业”数据库中

通常,我会在Windows服务中设置MSMQ之类的东西。我会让一个web服务向队列中添加一个作业,而windows服务将以一些标准的间隔轮询队列-按顺序处理作业

我如何在Apache中实现同样的功能?我可以很容易地创建一个python脚本作为后台作业处理器。我的问题是:

  • 我如何启动它的进程,让它运行,并停止与Apache
  • 我如何监控该过程-确保Apache保持活动状态
  • 欢迎提供任何提示或见解


    注意。操作系统是Windows Server 2008

    这是一个非常黑客的解决方案,适合任何想做类似事情的人

  • 设置执行该后台处理的windows计划任务。将其设置为每天运行一次或任意间隔(这与此无关,您将在接下来的步骤中看到)

  • 在计划任务的“设置”选项卡中,确保选中“允许按需运行任务”选项。此外,在“如果任务已在运行…”文本下,确保在“选定”中的“不启动新实例”选项

  • 然后,从cgi脚本-可以从命令行(子流程模块)调用计划任务,请参阅。使用上面设置的选项-如果任务已在运行-将忽略任何后续的按需运行