Pheanstalk 问题

Posted

技术标签:

【中文标题】Pheanstalk 问题【英文标题】:Pheanstalk Questions 【发布时间】:2011-05-24 11:45:15 【问题描述】:

我正在寻找运行可以传递输入的 python 解释器的持久实例。设计用于执行此操作的整个系统将用 php 编写。我注意到用于 beanstalkd 工作队列的 Pheanstalk 包。有没有人使用 Pheanstalk 来产生(和维护)一个持久的过程?我知道 Pheanstalk 的常见用途是在异步事务中运行脚本或其他需要较长时间的任务,以避免用户等待。我希望异步地拥有一个 Pheanstalk 作业/进程来管理和维护一个我可以将输入传递给的 python 解释器进程。这是否可能/是否已经完成,如果是,怎么做?

【问题讨论】:

【参考方案1】:

我当然已经使用 Pheanstalk 运行了持久队列工作程序。它的工作原理是这样的:

父 PHP 进程派生指定数量的工作进程。每个工人使用 Pheanstalk 连接到 beanstalkd 并等待工作。当一个工人得到一份工作时,它会执行任务然后退出,释放它的内存。然后,父 PHP 进程会生成一个新的 worker 来替换它。

您的要求听起来更像这样:

父 PHP 进程使用proc_open() 派生一个 python 解释器进程,存储对创建的 STDIN 和 STDOUT 管道的引用。然后父 PHP 进程进入一个循环,使用 Pheanstalk 连接到 beanstalk 并保留下一个作业。当作业被保留时,PHP 使用 fwrite() 将作业内容发送到 python STDIN 管道,然后使用 fread() 从 python 的 STDOUT 管道读取响应。

这是假设您想要维护一个正在运行的 python 进程,而不是在每次保留作业时启动一个新的 python 进程。

无论哪种方式都很疯狂,但它可能会起作用。

更明智的选择是使用 Python beanstalkd 客户端,但是,很高兴看到更多人使用 Pheanstalk :)

干杯, 保罗

【讨论】:

嘿 paradox870,这有助于回答您的问题吗?接受或赞成会很棒。干杯。 嘿,保罗很好的答案。我开始使用 pheanstalk,我自己也有一些疑问。我创建了一个问题,您能否给我您的见解? ***.com/questions/37370688/…

以上是关于Pheanstalk 问题的主要内容,如果未能解决你的问题,请参考以下文章

部署简单 AWS Beanstalk PHP 应用程序的最简单方法,无需任何 PHP 框架,使用 RDS + ElastiCache 处理数据

什么是问题管理

SVM原问题与对偶问题

P问题,NP问题,NPC问题,NP-hard问题

P问题NP问题和NPC问题

网络流24题(好大的坑啊)