停止执行python脚本

时间:2017-04-09 18:01:52

标签: python python-3.x

我有以下python脚本( server.py ),以便侦听端口并捕获来自客户端的请求。我从另一个python文件( Main.py )调用此脚本。我的要求是在一段时间后停止执行 server.py 。我尝试在文件的最后一行使用exit() - server.py 来停止服务器并停止执行文件,但是我无法阻止脚本运行和服务器不断回应。任何人都可以帮我告诉我哪里出错了。

Server.py

bind_ip = "127.0.0.1"
bind_port = 2530

def servercreate():
    server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    server.bind((bind_ip,bind_port))
    server.listen(5)

    while True:
        client, addr = server.accept()
        print('[*] Accepted connection from: %s:%d' % (addr[0], addr[1]))
        client_handler = threading.Thread(target=handle_client, args=(client,))
        client_handler.start()


def handle_client(client_socket):
    request = client_socket.recv(2056)
    print('[*] Received: %s' % request)

    message = "{}"
    client_socket.send(message.encode('utf-8'))
    client_socket.close()

if __name__ == '__main__':
    servercreate()

Main.py

import Server
Server.servercreate()

1 个答案:

答案 0 :(得分:3)

如果你不希望你的代码被time.sleep中断(我想这会阻止代码运行),请使用:

import time
timeout = time.time() + 10

while True:
    print ('hello')
    if time.time() > timeout:
        print ('program terminated')
        break

如果你想要10分钟的时间使用:

timeout = time.time() + 60*10   

如果您只想在一定时间后停止程序运行,请使用类似

的内容
import time

x=0
while True:
    print ('waiting 5')
    time.sleep(5)
    x += 1
    if x == (10):
        break

time.sleep是以秒为单位,break会停止循环并且应该结束你的程序

更新,试试这个:

import time


bind_ip = "127.0.0.1"
bind_port = 2530

def servercreate():

    #put minutes of time you want program to run for below
    minutes = 10
    timeout = time.time() + (60*minutes)

    server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    server.bind((bind_ip,bind_port))
    server.listen(5)

    while True:
        client, addr = server.accept()
        print('[*] Accepted connection from: %s:%d' % (addr[0], addr[1]))
        client_handler = threading.Thread(target=handle_client, args=(client,))
        client_handler.start()
        if time.time() > timeout:
            break


def handle_client(client_socket):
    request = client_socket.recv(2056)
    print('[*] Received: %s' % request)

    message = "{}"
    client_socket.send(message.encode('utf-8'))
    client_socket.close()


if __name__ == '__main__':
    servercreate()
相关问题