python 在 pyqt 关闭窗口时中安全退出 zerorpc

pyqt关闭时,取得关闭事件:

# Ui操作
class MainUi(QMainWindow, Ui_Form):
    send_config_signal = pyqtSignal(object)
    send_train_signal = pyqtSignal(object)

    def __init__(self, parent=None):
        #  [....]

    def closeEvent(self, event):
        result = QMessageBox.question(self,
                                      "Confirm Exit...",
                                      "Are you sure you want to exit ?",
                                      QMessageBox.Yes | QMessageBox.No)
        event.ignore()

        if result == QMessageBox.Yes:
            event.accept()
            os.kill(os.getpid(), signal.SIGTERM)  # 主动发出关闭信号

而 zerorpc,需要关注关闭信号:

def server_run():
    s = zerorpc.Server(TrainServerRPC())
    s.bind("tcp://0.0.0.0:4242")

    def stop_server():
        s.stop()
        sys.exit(0)

    gevent.signal_handler(signal.SIGINT, stop_server)   # 接收ctrl+c 信号
    gevent.signal_handler(signal.SIGTERM, stop_server)  # SIGTERM 关闭程序信号 # 命令行数据 kill pid 时的信号

    s.run()

关键地方就是使用:

os.kill 与 信号 signal.SIGTERM 的配合使用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值