如何在python服务器中间隔一段时间后调用一个函数?

时间:2015-11-26 09:59:43

标签: python sockets http

我有一个python套接字服务器,它监听HTTP个请求。它从ip地址列表中随机选择后返回ip地址及其端口。此结果由另一个从数据库中提取的文件生成。数据库不断更新。我希望在每10个请求之后或100秒之后更新列表,其中任何一个都可以工作。以下代码对我不起作用。每五个请求后连接就会重置。我打印了计数,每增加5个请求就增加到10。谁能告诉我我在这里缺少什么?

result=get_ip() # Get a list of dictionary by calling get_ip() function
HOST, PORT = '127.0.0.1', 8890
listen_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
listen_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
listen_socket.bind((HOST, PORT))
listen_socket.listen(10)
print 'Serving HTTP on port %s ...' % PORT
count = 0
while True:
    if count % 10 == 0:
         result=get_ip()
    count +=1
    client_connection, client_address = listen_socket.accept()
    rand_ip = random.choice(result)
    ip = rand_ip["ip"]
    port = rand_ip["port"]
    client_connection.sendall(ip+":"+port)
    client_connection.close()

1 个答案:

答案 0 :(得分:2)

问题来自deleted move ctor。在写入内容后立即关闭套接字是危险的。您应首先关闭套接字,使对等体具有0读数,指示正确的流和

所以你的脚本应该以:

结束
close