2013-02-27 92 views
0

使用无限循环进行网络连接被认为是一种很好的编程习惯吗?网络连接的无限循环

实施例:

//connect to server 
conn = getConnection() 
while True: 
    data = conn.getData() 
    //do something 

我想要实现此以有效的方式,如登记事件并将程序睡觉。我正在寻找类似于在Linux中处理信号的实现。

我的目标语言是C,Python和Java。

+1

尝试异步编程,尝试扭曲。 – Abhijit 2013-02-27 19:46:35

回答

0

无限循环几乎总是不好。你想要什么,是一个无限循环和优雅的退出方式。

试试这个办法,在Python说明,但你可以找到其他语言的当量太:

#!/usr/bin/env python 
# -*- coding: utf-8 -*- 

import os 
import atexit 

PID = os.getpid() 


@atexit.register 
def clean_shut(): 
    LOGGER.debug("Clean shut performed") 

    try: 
     os.unlink("module_name.%d" % PID) 
    except: 
     pass 


def main(): 
    f = open("module_name.%d" % PID, "w") 
    f.write("Delete this file to shut module_name cleanly") 
    f.close() 

    conn = getConnection() 

    while os.path.exists("module_name.%d" % PID): 
     conn = getConnection() 
     # do something 

if __name__ == '__main__': 
    main() 

为了优雅的退出(如果你选择这样做),删除生成的module_name.%PID文件让最近的迭代完成,这样你就不会丢失任何数据或者破坏你的每次迭代工作流程。