搜尋

首頁  >  問答  >  主體

web服务器 - 如何在python进程被销毁时正确关闭对外连接?

比如一个python进程里有对数据库的网络连接,那在该python进程被系统销毁时,应该如何正确关闭这些连接呢?

更新:

我表达的可能还不够清楚,真实的场景是我用flask搭了个简单的网络应用服务程序,其中持有一个到数据库的连接;而整个应用服务是挂在iis7下面的。

我对web服务器的机制完全不了解,我想到的问题是web服务器是如何结束python程序进程的呢?(目测iis可以根据需要开启多个进程,也会根据需要结束进程)而在python程序的生命周期中,是否有相应的方法在进程正常销毁时被调用呢?(而我可以在该方法中关闭到数据库的连接)

ringa_leeringa_lee2767 天前361

全部回覆(2)我來回復

  • 巴扎黑

    巴扎黑2017-04-17 16:44:42

    進程銷毀時網路連線是會自動關閉的,不過如果需要額外的操作,可以嘗試 atexit 模組:

    import atexit
    
    @atexit.register
    def goodbye():
        do something
    

    回覆
    0
  • PHPz

    PHPz2017-04-17 16:44:42

    Python中的RAII用with來實現,這樣即使發生了異常你也能釋放這些資源,可以參考python clean-up
    這是其中使用with的例子:

    with open("myfile.txt") as f:
        for line in f:
            print line,
    

    回覆
    0
  • 取消回覆