由于单个IOLoop,运行状况检查API被阻止

时间:2019-02-12 04:57:39

标签: python tornado ioloop

我有一个龙卷风应用程序,我们有两个API的/ health和/ make 对/ make API的调用需要10分钟来构建所需的资源并将其加载到内存,在此期间,由于/ server被标记为不正常,因此对/ health的调用被阻止。什么是构建/ health API的更好方法。

2 个答案:

答案 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。实际上,新流程(子流程/子流程)与主龙卷风流程完全分开,但通过界面隐藏该事实。