如何在 Rails 应用程序启动时启动线程并在停止时终止它
我想在我的 Rails 应用程序开始时自动启动后台线程并在停止时终止它(开发模式中的 Ctrl + C 或生产中的终止信号)
我在启动时启动线程没有问题,但我不能设法在停止时终止它。要么它不会停止,要么它阻止我的 Rails 应用程序退出。
有自动的方法吗?或者我应该钩住铁轨挡块吗?如何 ?
预先感谢您的建议。
PS 顺便问一下,你知道如何使用rails线程的“pid”功能吗?我的意思是在启动时将一个小文本文件放入 tmp/pids 并自动删除它的方法。我确信有一些函数可以做到这一点。
I would like to automatically launch a background thread at the start of my rails app and terminate it at stop (Ctrl + C in dev mode or kill signal in production)
I've no problem launching my thread at start, but I can't manage to terminate it at stop. Either it doesn't stop, either it prevent my rails app from quitting.
Is there an automatic way ? Or should I hook the rails stop ? How ?
Thanks in advance for your advices.
P.S. By the way, do you know how to use the "pid" feature of the rails thread ? I mean the way to put a small text file in tmp/pids at start and removing it automatically. I'm sure there are some functions to do that.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
(老问题,但我不喜欢未回答的问题;-)
一个方便的方法是设置类似于 Rails“初始化器”的“终结器”。然后,您可以在初始化程序中启动线程并在终结程序中关闭它们。
我们在“退出时”使用 ruby,参见 Rails 的关闭钩子)
3. 然后我们可以在“终结器”中使用类似的东西:(这里我们尝试阻止据称在初始化器中启动的“workers”)
(Old question, but I don't like unanswered questions ;-)
A convenient way to do this is to set "finalizers" similar to rails "initializers". You can then launch threads in initializers and close them in finalizers.
(we use ruby "at exit", cf. Shutdown hook for Rails)
3. Then we can use something like that in a "finalizer" : (here we attempt to stop "workers" supposedly launched in initializers)
您是否尝试过将您的应用程序包装在开始中......确保像这样:
Have you tried wrapping your app in a begin..ensure like this: