我希望运行一个持久的python解释器实例,它可以传递输入。为此而设计的整个系统将使用PHP编写。我注意到在beanstalkd工作队列上使用的Pheanstalk包。有没有人使用Pheanstalk来产生(和维护)一个持久的进程?我知道Pheanstalk的常见用法是运行脚本或其他在异步事务中花费较长时间的任务,以避免用户等待。我正在寻找一个异步的Pheanstalk作业/进程,它管理和维护一个我可以传递输入的python解释器进程。这是否可能/是否已经完成,如果是,是如何完成的?
发布于 2011-05-24 23:21:50
我确实使用Pheanstalk运行过持久队列工作程序。它的工作原理如下:
父PHP进程派生指定数量的工作进程。每个worker使用Pheanstalk连接到beanstalkd并等待作业。当一个工人得到一个工作,它执行任务,然后退出,释放它的内存。然后,父PHP进程会产生一个新的worker来替换它。
您的需求听起来更像这样:
父PHP进程使用proc_open()派生python解释器进程,存储对创建的STDIN和STDOUT管道的引用。然后,父PHP进程进入循环,使用Pheanstalk连接到beanstalk并保留下一个作业。当作业被保留时,PHP使用fwrite()将作业内容发送到python STDIN管道,然后使用fread()从pythons STDOUT管道读取响应。
这是假设您想要维护一个正在运行的python进程,而不是在每次保留作业时启动一个新的python进程。
无论哪种方式都很疯狂,但它可能会起作用。
更明智的选择是使用Python beanstalkd客户端,但是,很高兴看到更多的人使用Pheanstalk :)
干杯,保罗
https://stackoverflow.com/questions/6109872
复制相似问题