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

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

【问题讨论】:

    标签: php persistent beanstalkd


    【解决方案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,我自己也有一些疑问。我创建了一个问题,您能否给我您的见解? stackoverflow.com/questions/37370688/…
    猜你喜欢
    • 2016-09-21
    • 2016-09-19
    • 2022-01-19
    • 2013-07-31
    • 2016-09-19
    • 2017-05-24
    • 2015-05-25
    • 2021-01-22
    相关资源
    最近更新 更多