1
Weakdancer OP 发现在windows 下ctrl+c 依然不起作用
但是具体问题是: 使用flask绑定80端口后 关闭程序 windows下80端口被释放 linux(fedora14)没有释放,我只能重启,因为我找不到应该在那里释放 |
2
mrkschan 2011-09-15 22:07:22 +08:00
先找 process id
`ps -ef | grep python` 或者 `ps -ef | grep py` kill <process id> |
3
Weakdancer OP |
4
Livid MOD Maybe you need to catch KeyboardInterrupt and exit?
I will write code to try now. |
5
ayanamist 2011-09-15 22:19:23 +08:00
在线程中应该用threading.Event来监视,或者是producer-consumer模型的话,要在consumer里匹配一种特殊的TerminateClass,每次queue.get()的时候检测一下。
这才是比较正确的做法,Linux下貌似可以强行发信号停止,不过会丢失数据,并不稳妥。 可以去参考APScheduler或SleekXMPP的设计 |
6
Weakdancer OP |
7
Livid MOD @Weakdancer 关于控制 Flask app 的进程你可以试试这个:
http://www.supervisord.org/ 嗯,我刚才在用代码试验,关于多线程的控制我也没有太多经验,不过对这类问题非常有兴趣。 |
8
Weakdancer OP |
9
Livid MOD |
10
Livid MOD 现在没有在自己的机器上,用的是别人机器上普通编辑器,所以代码里有奇怪的硬 tab ;)
|
11
Weakdancer OP @Livid
明天我测试下,非常感谢 |
12
ayanamist 2011-09-16 08:53:08 +08:00
@Weakdancer 性能提升要看干什么。如果没有阻塞性操作,那由于GIL的影响,性能反而有点下降的。另外并不是只有多线程才好,gevent、stackless(greenlet)等可以异步的协程结构一样可以达到高性能,同时降低线程切换之间的开销。
|
13
jell 2015-04-16 11:20:22 +08:00
@Weakdancer 我现在也出现端口没有释放的问题,有没有函数主动释放之类的
|