0

我正在制作一个 Rails 应用程序。在一个动作中,我需要生成一个长时间运行的进程。这不是问题。我可以使用 spawn gem 或其他方法创建新进程。但是在进程产生一段时间后,用户必须能够向该进程传递额外的数据。

当然,我可以 fork 进程,它会监听一个 UNIX 套接字,在 HTTP 会话中存储套接字地址,并在用户需要将新数据传递给进程时使用 drb 协议与该进程通信。但我认为这不是最佳解决方案,将应用程序部署到主机将是一个问题。

有什么简单的方法可以做到这一点?

4

3 回答 3

0

建议上一层。使用delayed_job 为您的作业处理参数的生成和初始设置。

您可以修改delayed_job 的dbms 模型以添加您希望稍后发送到作业的附加信息的字段。

那么您的流程将是:

  1. 使用延迟作业提交。存储作业表的 id。如果 stock de;ayed_job 没有为您提供作业 ID,则根据需要修改 delay_job。

  2. 将附加数据添加到工作表中的字段

如果您的主要作业需要从分叉作业返回数据,那么您也可以为此设置一个 db 字段。

您应该尝试设计您的应用程序以最小化所需的消息传递量。否则你需要设计一个消息协议。可以完成,但这是您应该尽量避免的工作。

于 2010-04-01T02:42:54.880 回答
0

附加数据可以进入数据库,并且该过程在那里检查“新数据”吗?

于 2010-03-31T00:01:44.463 回答
0

你不能使用一个线程并通过两个队列与它通信,一个用于线程的输入,一个用于线程的响应?

于 2010-04-01T16:57:47.187 回答