1

我有一个完全用通常的 html/css/javascript 和一些使用 jQuery 的附加内容编写的 Web 应用程序。我还有一个用 python 编写的非常庞大的程序,它需要对用户在我的网络应用程序上提供的输入进行操作。目前,我正在将 Php 的输入写入文件并在 python 中读取它以进行操作。有没有更好的方法来实现这种同步?此外,一旦某些用户单击提交按钮,我就需要执行我的 python 程序。如何让 python 等待这个?

4

2 回答 2

3

由于对常规文件的严重 I/O 操作,您的同步方式会产生相当大的开销,您必须处理锁,即使很小的负载增长也会导致整个系统崩溃。

我建议您熟悉通常用于在两个进程之间交换信息的 IPC 技术:

  1. 在 Python 中,有一个subprocess模块可以帮助您使用 PIPES 在进程之间进行通信,这比使用常规文件更可靠。PHP 还具有popen函数,可让您调用 python 进程并将数据传递给它以进行进一步处理(通过 PIPES)。
  2. 另一种方法是在两个进程之间从头开始构建套接字通信,其中您的 PHP 部分将是一个套接字客户端,而 Python 部分将是一个套接字服务器(将需要比以前的方式更多的工作)。
  3. 您还可以使用更好的数据排队方式进行进一步处理(我的意思是比常规文件更好),例如使用消息服务(其中有很多,RabbitMQRedis Pub/Sub等),这些服务绝对可以使用来自 Python 或 PHP。

也有一些技术超出了范围,但我选择了这 3 种方式来安排 IPC,因为它们是最简单和最快的实现方式。

您可以尝试所有这些或一些,并分析在您的特定情况下什么是最好的方法。

于 2012-08-29T11:36:44.823 回答
-3

如果你的应用程序已经在 python 中,为什么你会用 php 编写网站后端?

回答您的问题 - http://wiki.python.org/moin/IntegratingPythonWithOtherLanguages

但我建议,你放弃愚蠢的 php 并采用一些像 Django 这样的 python 框架并使用它来构建你的后端。如果你这样做了,那么集成你的 python 代码就是导入一个类/方法的简单问题。

于 2012-08-29T11:24:24.760 回答