
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 OP |
4 Livid MOD PRO 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 PRO @Weakdancer 关于控制 Flask app 的进程你可以试试这个: http://www.supervisord.org/ 嗯,我刚才在用代码试验,关于多线程的控制我也没有太多经验,不过对这类问题非常有兴趣。 |
8 Weakdancer OP |
9 Livid MOD PRO |
10 Livid MOD PRO 现在没有在自己的机器上,用的是别人机器上普通编辑器,所以代码里有奇怪的硬 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 我现在也出现端口没有释放的问题,有没有函数主动释放之类的 |