代码之家  ›  专栏  ›  技术社区  ›  hometoast

防止长时间运行的ActionController并发执行

  •  1
  • hometoast  · 技术社区  · 14 年前

    我在控制器中有一个动作可能需要很长时间才能完成。

    我想防止两个用户同时运行它。

    到目前为止,我在启动时在数据库中插入一条记录,完成后删除它。

    做这件事的更好方法是什么?

    1 回复  |  直到 14 年前
        1
  •  1
  •   tadman    14 年前

    您可以将其移到后台的DelayedJob之类的位置以避免锁定应用程序,也可以使数据库驱动的锁更通用。这个策略看起来并不太不合理,尤其是当它阻止你的应用程序崩溃时。