gpt4 book ai didi

python - 如何从 Python 脚本中终止 SimpleHTTPServer?

转载 作者:太空狗 更新时间:2023-10-29 21:31:54 25 4
gpt4 key购买 nike

我正在尝试使用 http.server 来测试 Python 项目中的所有链接。如果我在运行我的脚本之前启动服务器,我可以让我的脚本工作,然后当我关闭终端窗口时服务器停止。但我真的很喜欢脚本本身来启动和停止服务器。

我做了一个测试脚本来简单地启动服务器,获取一个页面并证明服务器正在运行,然后停止服务器。我似乎无法获得服务器的 pid。当我试图在脚本运行后终止该脚本报告的 pid 时,我收到一条消息,指出没有这样的进程;但服务器仍在运行。

我如何获得服务器的正确 pid,或者更一般地说,我如何从脚本中停止服务器?

import os
import requests
from time import sleep

# Start server, in background.
print("Starting server...")
os.system('python -m http.server &')
# Make sure server has a chance to start before making request.
sleep(1)

print "Server pid: "
os.system('echo $$')

url = 'http://localhost:8000/index.html'
print("Testing request: ", url)
r = requests.get(url)
print("Status code: ", r.status_code)

最佳答案

这是我正在做的:

import threading

try:
from http.server import HTTPServer, SimpleHTTPRequestHandler # Python 3
except ImportError:
from SimpleHTTPServer import BaseHTTPServer
HTTPServer = BaseHTTPServer.HTTPServer
from SimpleHTTPServer import SimpleHTTPRequestHandler # Python 2

server = HTTPServer(('localhost', 0), SimpleHTTPRequestHandler)
thread = threading.Thread(target = server.serve_forever)
thread.daemon = True
thread.start()

def fin():
server.shutdown()

print('server running on port {}'.format(server.server_port))

# here is your program

如果您在程序中调用 fin,则服务器会关闭。

关于python - 如何从 Python 脚本中终止 SimpleHTTPServer?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19570591/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com