我有一个龙卷风应用程序,我们有两个API / health和/ make调用/ make API需要10分钟来构建所需的资源并将其加载到内存,在此期间,对/ health的调用被阻止,因为服务器被标记为不良。什么是构建/健康API的更好方法。
这是一个很好的和普遍的做法(是有原因的),以move long blocking operations from the main thread into a separate thread/pools /芹菜/等。如果你有资源建设这样做,你与/health
主线程是畅通和可用。
我相信将阻塞过程移动到新线程中的最简单,也是最像龙卷风的方法是使用tornados子进程impl。这里描述:https://www.tornadoweb.org/en/stable/process.html#tornado.process.Subprocess
简而言之:我们的想法是在一个新线程中启动build
进程,其中I / O被添加到IOLoop,就像任何其他非阻塞I / O资源一样。实际上,新进程(子进程/子进程)与主龙卷风进程完全分离,但是它可以隐藏这一事实。