我不知道如果我停止使用,如果恰好有一些SQL的执行承诺停止扭曲时,工厂会等待sql执行完成吗?
kill `cat twistd.pid`
会发生什么twistd来处理? 它会等待执行完成吗?或只是未知的,它可以完成,或放弃?
我知道如果我把执行放在stopFactory方法中,工厂会做类似的事情,比如等待执行完成。但如果我不这样做,我的意思是执行stopFactory方法,它会在工厂停止之前等待执行完成吗?
谢谢。
我不知道如果我停止使用,如果恰好有一些SQL的执行承诺停止扭曲时,工厂会等待sql执行完成吗?
kill `cat twistd.pid`
会发生什么twistd来处理? 它会等待执行完成吗?或只是未知的,它可以完成,或放弃?
我知道如果我把执行放在stopFactory方法中,工厂会做类似的事情,比如等待执行完成。但如果我不这样做,我的意思是执行stopFactory方法,它会在工厂停止之前等待执行完成吗?
谢谢。
杀默认发送SIGTERM
。扭曲安装一个SIGTERM
处理它调用reactor.stop()
。凡是当你调用reactor.stop()
当您使用kill
命令会发生,会发生。
更具体地说,任何关闭触发器将会运行。这意味着连接到Application
将有称为其stopService
方法(以及如果返回Deferred
,它将被允许进入关机之前完成)的任何服务。这也意味着反应堆线程池中的工作线程将以有序的方式关闭,即允许完成正在进行的任何工作。
如果您使用的是adbapi,那么ConnectionPool
将使用自己的ThreadPool
,并且还会注册一个关闭触发器,以相似的顺序关闭该池。
所以,当你使用kill
停止基于双绞线的过程中,任何SQL中期执行将被允许完成关闭发生之前。
我使用adbapi,所以我认为它是安全的。谢谢,JP。 – holsety