代码之家  ›  专栏  ›  技术社区  ›  Derek P.

在Rails中旋转后台任务

  •  12
  • Derek P.  · 技术社区  · 16 年前

    为Rails应用程序创建后台任务的首选方法是什么?我听说过Starling/Workling和优秀的ol'script/runner,但我很好奇,哪一个正在成为管理这种需求的诽谤方式?

    谢谢!

    澄清: 我喜欢Rake-in后台的想法,但问题是,我需要一些持续运行或每10小时运行一次的东西。我不会奢侈地坐在一个Web请求上,它需要由服务器异步启动到我的站点上发生的活动。

    8 回复  |  直到 6 年前
        1
  •  21
  •   Tim Knight    16 年前

    Ryan Bates创作了三部很好的电影剧本,可能真的对你有帮助:

    1. Rake in Background
    2. Starling and Workling
    3. Custom Daemon

    他谈到了使用每种方法的各种利弊。这将帮助您开始。

        2
  •  5
  •   csga5000    6 年前

    这取决于你的需要。

    尝试由Tobi创建的延迟作业 delayed_job (最新更新于2011年),一位购物网站创始人。

    DHH有餐叉 deleayed_job (上次更新于2008年)和CollectionIdea delayed_job (上一次更新时间为20天前,截至2018年6月28日)。

        3
  •  3
  •   Chirantan    16 年前

    我通常依靠 cronjob scheduling 因为它提供了灵活性,而不必编写单独的代码来调度它。任何可以从shell执行的操作都可以被调度!无论是任何脚本(ruby/rake task/py/bash/任何其他您喜欢的脚本),cronjob调度都可以轻松实现。

    如果在Windows上运行,可以使用 scheduled tasks

    希望这有帮助。

        4
  •  1
  •   Dustin    16 年前

    async_observer 是最好的。它不会做各种愚蠢的忙着等待的事情,也不会在员工崩溃时丢掉工作,比如Starling,无数据库投票等等。它非常好地集成到Rails中。

    我推 通过它的工作,它几乎不关心。

        5
  •  1
  •   Jon Wood    16 年前

    上面提到的大多数插件都可以完成这项工作,但是如果您所需要的只是一个按设定的时间表运行的rake任务,那么就没有必要开始为它添加更多的体系结构。

    只需添加执行的cron作业

    “cd/path/to/rails/app;rails_env=production rake run:my:task”

    当类Unix的操作系统已经按计划运行了几十年,为什么要重新发明轮子?

        6
  •  0
  •   frankodwyer    16 年前

    我以前使用过守护进程插件。

        7
  •  0
  •   salt.racer    16 年前

    虽然我不知道它是否正在成为一种标准,但我在 BackgroundRB . 我有几个工人,其中一些是由用户操作触发的长时间运行的任务,而另一些是按计划启动的。

        8
  •  0
  •   zuk    16 年前

    看一看 Taskr .它基本上像cron,但是有一个RESTful的Web界面。您可以使用它来安排任务,定期连接到Rails应用程序并触发任意代码(通过taskr4rails插件)。这意味着它可以很好地适应一个基于RESTful服务构建的系统,而且它可以在任务返回错误、无法运行等情况下通知您。