我想知道我是否使用
kill `cat twistd.pid`
如果确实有一些 sql 执行提交会发生什么?它会等待执行完成吗?或者只是未知,它可以完成,还是放弃?
我知道我是否将执行放在stopFactory方法中,工厂会做诸如等待执行完成之类的事情。但如果我不这样做,我的意思是执行 stopFactory 方法,它会在工厂停止之前等待执行完成吗?
谢谢。
killSIGTERM
默认发送。Twisted 安装了一个SIGTERM
处理程序,它调用reactor.stop()
. reactor.stop()
当您使用该kill
命令时,您调用时会发生的任何事情都会发生。
更具体地说,任何关闭触发器都会运行。这意味着附加到 a 的任何服务Application
都将调用它们的stopService
方法(如果 aDeferred
返回,它将被允许在关闭继续之前完成)。这也意味着反应器线程池中的工作线程将以有序的方式关闭 - 即,允许完成他们正在进行的任何工作。
如果您使用的是 adbapi,那么它会ConnectionPool
使用它自己的ThreadPool
并且还会注册一个关闭触发器以以类似的有序方式关闭该池。
因此,当您使用kill
停止基于 Twisted 的进程时,将允许任何 SQL 中间执行在关闭发生之前完成。