首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在python服务器的某个时间间隔后调用函数?

如何在python服务器的某个时间间隔后调用函数?
EN

Stack Overflow用户
提问于 2015-11-26 09:59:42
回答 1查看 483关注 0票数 1

我有一个python服务器,它侦听HTTP请求。它从ip地址列表中随机选择后返回ip地址和端口。此结果由另一个文件生成,该文件将从数据库中获取该结果。数据库不断更新。我希望列表被更新后,每10个请求或100秒钟后,其中任何一个将工作。下面的代码对我不起作用。连接在每五次请求之后被重置。我打印了数字,每5次请求就增加到10次。有人能告诉我我在这里错过了什么吗?

代码语言:javascript
复制
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()
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-11-26 13:12:50

问题来自于close。在把东西写进插座后立即关闭插座是危险的。您应该首先关闭套接字,以使对等点有一个0读取,指示正确的流和of流。

因此,您的脚本应该以以下内容结尾:

代码语言:javascript
复制
client_connection.sendall(ip+":"+port)
try:
    client_connection.shutdown(socket.SHUT_WR)  # signal end of strem
    while True:  # wait for the client to close or shutdown his side
        q = client_connection.recv(1024)
        if len(q) == 0:
            break
finally:
    client_connection.close()  # close the socket only after the client has close its side
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33935568

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档