2010-03-07 52 views
1

嗨,大家好,我有一个程序,它使用ajax通过基于用户表单输入的API向多个社交网络发送帖子。我在想,如果这个过程(我自己测试的时间不超过2-3秒)是否值得像BackgroundRB一样进行守护?换句话说,如果这个程序被100多人使用,那么通过AJAX简单调用一个动作会减慢整​​个应用程序的速度吗?值得使用守护进程吗?

回答

2

是的我推荐使用DelayedJob来完成这项任务。你想避免不必要的HTTP请求到你的应用程序。通过DelayedJob,它连接到您的数据库并进行第三方连接,而不会向您的应用发起任何HTTP请求。

我不会推荐BackgroundRB。

+0

好了,但是,我需要能够告诉用户在发送帖子时是否发生错误。直接的方式可以让我立即发送回应,并且可以使用周期性的AJAX调用来检查BackgroundRB作业的状态。是否有类似于检查delayed_job的状态? – hmind 2010-03-07 20:26:52

+0

+1用于DelayedJob。我最喜欢的Ruby on Rails工具集之一。 – 2010-03-07 20:37:02

+0

您应该始终写下延迟的作业代码,以便作业本身不会失败。无论你是否从某个特定的错误或其他问题中解脱出来,工作都应该完成,以免再次尝试。在你的情况下,我会更新一个数据库列,说发送更新到一个特定的社交网络失败。 – bensie 2010-03-08 23:11:06

1

排序答案:你必须进入后台,使用delayed_job

较长的答案:

的问题是,虽然它只需2-3秒,它完全锁定应用程序服务器,而它可以。所以如果你让5个mongrels或者客运应用服务器运行,这意味着如果5个人决定在2-3秒内做出这个动作,其他请求将不能被处理。

因此,虽然在开发过程中可以做到这一点,但它必须将其转移到生产背景中。

我不会推荐BackgroundRB。对于你需要什么,似乎你需要delayed_job

0

你有很多的解决方案,做出

  • BJ
  • delayed_job的
  • resque