Python 停止twisted时,工厂是否会等待sql执行完成?

Python 停止twisted时,工厂是否会等待sql执行完成?,python,twisted,kill,Python,Twisted,Kill,我想知道我是否可以使用 kill `cat twistd.pid` 如果确实有一些sql执行提交,会发生什么? 它会等待执行完成吗?或者只是不知道,可以这样做,还是放弃 我知道如果我把执行放在stopFactory方法中,工厂会做一些事情,比如等待执行完成。但是如果我没有,我的意思是停止工厂方法的执行,它会在工厂停止之前等待执行完成吗 谢谢。默认情况下,kill发送SIGTERM。Twisted安装调用reactor.stop的SIGTERM处理程序。当你调用reactor.stop时会发生的

我想知道我是否可以使用

kill `cat twistd.pid`
如果确实有一些sql执行提交,会发生什么? 它会等待执行完成吗?或者只是不知道,可以这样做,还是放弃

我知道如果我把执行放在stopFactory方法中,工厂会做一些事情,比如等待执行完成。但是如果我没有,我的意思是停止工厂方法的执行,它会在工厂停止之前等待执行完成吗

谢谢。

默认情况下,kill发送SIGTERM。Twisted安装调用reactor.stop的SIGTERM处理程序。当你调用reactor.stop时会发生的任何事情都会在你使用kill命令时发生

更具体地说,任何关闭触发器都将运行。这意味着附加到应用程序的任何服务都将调用其stopService方法,如果返回一个Deferred,则允许它在关闭继续之前完成。这也意味着反应堆线程池中的工作线程将被有序地关闭——也就是说,允许他们完成正在进行的任何工作

如果您使用的是adbapi,那么ConnectionPool将使用自己的ThreadPool,并注册一个关闭触发器,以类似的顺序关闭该池

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

默认情况下,kill发送SIGTERM。Twisted安装调用reactor.stop的SIGTERM处理程序。当你调用reactor.stop时会发生的任何事情都会在你使用kill命令时发生

更具体地说,任何关闭触发器都将运行。这意味着附加到应用程序的任何服务都将调用其stopService方法,如果返回一个Deferred,则允许它在关闭继续之前完成。这也意味着反应堆线程池中的工作线程将被有序地关闭——也就是说,允许他们完成正在进行的任何工作

如果您使用的是adbapi,那么ConnectionPool将使用自己的ThreadPool,并注册一个关闭触发器,以类似的顺序关闭该池


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

我使用的是adbapi,所以我认为它是安全的。谢谢,JP。我用的是adbapi,所以我认为它是安全的。谢谢,JP。