python 如何在请求结束时释放资源?

2015-05-29 17:04:30 +08:00
 cevincheung

学习python中。

貌似python做web是执行一个daemon,那么是不是说连接数据库什么的资源不会像php那样被自动释放呢?那不就是会有一堆资源被占用?

del貌似也是在脚本之行结束后才会被执行啊。python应该怎么释放资源?

3863 次点击
所在节点    Python
12 条回复
wy315700
2015-05-29 17:07:37 +08:00
什么框架
yahoo21cn
2015-05-29 17:11:45 +08:00
一般来说数据库连接用完后要手动关闭,连接池也是。
binux
2015-05-29 17:12:34 +08:00
为什么要释放?下一个请求来了接着用不就好了,还节约了连接的时间。
clino
2015-05-29 17:16:00 +08:00
imlonghao
2015-05-29 17:40:17 +08:00
数据库链接从来不断开...
cevincheung
2015-05-29 19:15:54 +08:00
@imlonghao
@binux
@yahoo21cn

那python是如何gc的?
yahoo21cn
2015-05-29 19:25:01 +08:00
每次用完关闭数据库连接和gc无关,搜索个python的数据库操作例子看看就行了。
tigerstudent
2015-05-29 21:34:07 +08:00
析构函数在对象没有再被引用就执行了。
一般为了减少连接消耗,数据库连接都是保持全局的吧。
谷歌Python垃圾回收找不到讲解?
cevincheung
2015-05-29 23:18:20 +08:00
@tigerstudent
@yahoo21cn

那貌似就是说可能会存在web应用执行过程中如果数据库宕机了那必须要重启web daemon?因为当数据库宕机的时候web daemon的连接也断掉了(或者在程序里实现数据库断线重连?)
yahoo21cn
2015-05-30 09:26:00 +08:00
还真没试过,不过现在除了学习,一般都是直接上连接池的,连接池有重连机制,你不用操心这个
cevincheung
2015-05-30 13:27:45 +08:00
@yahoo21cn 那连接池挂了咋办?
yahoo21cn
2015-05-30 13:30:11 +08:00
连接池就是webserver本身

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/194737

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX