0

我有一个需要每隔一段时间运行的多阶段过程。我还有一个控制器程序,它在正确的时间启动流程,将流程的各个阶段链接在一起,并检查每个阶段是否正确执行。控制器访问一个数据库,该数据库存储有关流程过去运行的信息、流程未来执行的参数等。

现在,我想使用 Pyramid 为 Controller 构建一个 Web 界面,以便我可以查看有关进程的信息并影响 Controller 的运行。这意味着 Web 界面中的操作必须影响控制器数据库中的更改。自然,Web 界面将使用与控制器完全相同的数据模型。

控制器和 Web 服务器交互的最佳方式是什么?我考虑了两种可能性:

  • 通过在 Pyramid 的初始化例程中调用 sched 来组合控制器和 Web 服务器
  • 让 Web 服务器向控制器发送 RPC,例如使用 Pyro。

我应该如何在这里进行?以及在使用第二个选项时如何避免(数据模型的)代码重复?

4

1 回答 1

0

我会避免在与 Web 应用程序相同的进程中运行您的控制器 - 例如,以较低的权限运行 Web 应用程序是一种常见的做法;在一些多线程/多进程环境中,它可能会产生多个工作人员,然后可能会在感觉这样做时杀死/回收它们。因此,让您的控制器在具有某种 RPC 机制的单独进程中运行似乎是一个更好的主意。

关于代码重复 - 有 2 个选项:

  • 您可以将公共代码(模型)提取到两个应用程序都使用的单独模块/鸡蛋中

  • 如果您发现需要共享大量代码 - 没有什么会强迫您为这些应用程序拥有单独的项目。您可以拥有一个带有两个或多个“入口点”的代码库——其中一个将启动 Pyramid WSGI 应用程序,另一个将启动您的 Controller 进程。

于 2012-04-26T05:21:10.573 回答