【问题标题】:Easy, Robust IPC between Python and PHPPython 和 PHP 之间的简单、强大的 IPC
【发布时间】:2009-09-15 00:47:39
【问题描述】:

我有一个使用subprocess.Popen() 函数启动PHP 脚本的python 程序。 PHP 脚本需要与 Python 来回通信,我正在努力寻找一种简单而可靠的方式来管理消息发送/接收。

我已经使用基本套接字编写了一个工作协议,但感觉不是很健壮 - 我没有任何逻辑来处理丢弃的消息,我什至不完全理解套接字是如何工作的,这让我不确定关于还有什么可能出错的地方。

有没有比原始套接字更简单的通用库或 IPC 框架?

  • ATM 我需要支持 Python PHP 的东西,但将来我可能还希望能够使用 C、Perl 和 Ruby。
  • 我正在寻找稳健的东西,即当服务器或客户端崩溃时,对方需要能够优雅地恢复。

【问题讨论】:

    标签: php python ipc


    【解决方案1】:

    听起来你想要一个通用的 RPC 框架。

    你应该看看:

    Thrift 可能更符合您的需求。它被 Facebook 内部使用。

    【讨论】:

    【解决方案2】:

    您可以查看共享内存或命名管道,但我认为还有两个更可能的选择,假设至少其中一种语言用于 web 应用程序:

    A.使用数据库的原子性。在 python 中,开始一个事务,将消息放入表中,然后结束事务。从 php 开始一个事务,从表中取出一条消息或将其标记为“已读”,然后结束事务。让你的 PHP 和/或 python 有足够的自我意识,不要两次发布相同的消息。瞧;可靠(且可扩展)的 IPC,使用现有的 Web 架构。

    B.使您的网络服务器(假设为 webapp)能够同时运行 php 和 python,将任何内部进程锁定为仅 localhost 访问,然后使用标准库从您的其他语言使用 xmlrpc 或 soap 调用它们。这也是可扩展的,因为您可以稍后更改 URL 和安全锁定。

    【讨论】:

    • 不,它们都不是网络应用程序,我不想将它们与数据库引擎捆绑在一起。
    猜你喜欢
    • 2011-10-18
    • 2010-12-14
    • 1970-01-01
    • 2023-03-29
    • 1970-01-01
    • 2011-03-22
    • 2013-04-13
    • 2016-03-22
    • 2023-03-04
    相关资源
    最近更新 更多