我有一个龙卷风应用程序,我们有两个API的/ health和/ make 对/ make API的调用需要10分钟来构建所需的资源并将其加载到内存,在此期间,由于/ server被标记为不正常,因此对/ health的调用被阻止。什么是构建/ health API的更好方法。
答案 0 :(得分:0)
(出于某种原因)move long blocking operations from the main thread into a separate thread/pools / Celery / etc是一个很好且广泛的实践。如果您这样做是为了建立资源,则带有/health
的主线程将被解除阻塞并可用。
答案 1 :(得分:0)
我认为,将阻塞过程移动到新线程中最简单,最类似于龙卷风的方法是使用龙卷风子过程impl。此处描述:https://www.tornadoweb.org/en/stable/process.html#tornado.process.Subprocess
简而言之:想法是在一个新线程中启动build
进程,在该线程中,I / O像任何其他非阻塞I / O资源一样被添加到IOLoop。实际上,新流程(子流程/子流程)与主龙卷风流程完全分开,但通过界面隐藏该事实。