gpt4 book ai didi

ruby-on-rails - rails : Can I run backgrounds jobs in a different server?

转载 作者:行者123 更新时间:2023-12-03 18:20:35 25 4
gpt4 key购买 nike

是否可以在一台服务器上托管应用程序并在另一台服务器上排队作业?

可能的例子:

  • 两个不同的 EC2 实例,一个带有主服务器,第二个带有排队服务。
  • 在 Heroku 中托管应用程序并使用 EC2 实例和排队服务

  • 那可能吗?

    谢谢

    最佳答案

    当然是。我们在我工作的地方设置了 delay_job。

    它的工作有几个要求:

  • 服务器必须具有同步时钟。只要服务器时区都设置​​为相同,这通常不是问题。
  • 所有服务器都必须访问相同的数据库。

  • 为此,您只需在两台(或全部,如果多于两台)服务器上使用相同的应用程序,并在您想要处理作业的任何服务器上启动工作程序。任一服务器仍然可以对作业进行排队,但只有那些有工作人员正在运行的服务器才会真正处理它们。

    例如,我们有一个 interface服务器,一个 db服务器和几个 worker服务器。 interface服务器通过 Apache/Passenger 为应用程序提供服务,将 Rails 应用程序连接到 db服务器。 workers具有相同的应用程序,但 Apache 未运行,您无法通过 http 访问该应用程序。另一方面,他们确实有 delay_jobs 工作人员在运行。在常见情况下, interface服务器在 db 中排队作业,以及 worker服务器处理它们。

    一个警告:如果您依赖应用程序中的物理文件(附件、日志文件、下载的 XML 或其他任何东西),您很可能需要像 S3 这样的解决方案来保存这些文件。原因是各个服务器可能没有实际文件。例如,如果您的用户将他们的个人资料图片上传到您面向 Web 的服务器上,则这些文件可能会存储在该服务器上。如果您然后有另一台服务器来调整个人资料图片的大小,则该图像将不存在于工作服务器上。

    关于ruby-on-rails - rails : Can I run backgrounds jobs in a different server?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4621817/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com