1

我想知道我是否使用

kill `cat twistd.pid`

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

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

谢谢。

4

1 回答 1

6

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

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

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

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

于 2013-01-14T07:21:21.350 回答