簡體   English   中英

停止執行python腳本

[英]Stop a python script from executing

我有下面的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()

如果你不希望你的代碼被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()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM