防止长时间运行的 ActionController 同时执行
我在控制器中有一个操作可能需要很长时间才能完成。
我想阻止两个用户同时运行它。
到目前为止,我在开始时在数据库中插入一条记录,并在完成时删除它。
什么是更好的方法来做到这一点?
I have an action in a controller which could take a long time to complete.
I want to prevent two users from running it at the same time.
So far, I insert a record in the database when I start, and delete it when I'm done.
What is a better way to do this?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您可以将其移至后台(例如 DelayedJob)以避免锁定应用程序,或者可以使数据库驱动的锁更加通用。这个策略看起来并不太不合理,特别是如果它可以防止你的应用程序崩溃的话。
You could move this to something in the background like DelayedJob to avoid locking your application, or you could make your database-driven lock more generic. That strategy doesn't seem too unreasonable, especially if it prevents your application from melting down.