当停止扭曲时,工厂会等待sql执行完成吗?

hol*_*ety 1 python kill twisted

我想知道我是否停止使用扭曲过程

kill `cat twistd.pid`
Run Code Online (Sandbox Code Playgroud)

如果确实有一些sql执行提交将会发生什么?它会等待执行完成吗?或者只是未知,它可以完成,还是放弃?

我知道如果我把执行放在stopFactory方法中,工厂会做等待执行完成的事情.但是,如果我不这样做,我的意思是执行stopFactory方法,它会等待在工厂停止之前完成执行吗?

谢谢.

Jea*_*one 6

kill SIGTERM默认发送.Twisted安装一个SIGTERM调用的处理程序reactor.stop().reactor.stop()当您使用该kill命令时,在您打电话时会发生任何事情.

更具体地说,任何关闭触发器都将运行.这意味着附加到一个Applicationwill的任何服务都会stopService调用它们的方法(如果Deferred返回一个,它将被允许在关闭之前完成).它还意味着反应堆线程池中的工作线程将以有序的方式关闭 - 即,允许完成他们正在进行的任何工作.

如果您正在使用adbapi,那么它会ConnectionPool使用自己的adbapi ThreadPool并注册一个关闭触发器,以便以类似的有序方式关闭该池.

因此,当您kill用来停止基于Twisted的进程时,任何SQL中间执行都将被允许在关闭之前完成.