如何在服务器启动后继续使用python脚本?
问题描述:
我有这样的脚本:如何在服务器启动后继续使用python脚本?
import http.server
class JotterServer(http.server.BaseHTTPRequestHandler):
def do_GET(self):
self.send_response(200)
self.send_header('Content-Type', 'text/plain')
self.end_headers()
message = "Howdy"
self.wfile.write(bytes(message, 'utf-8'))
return
def start_server():
print('Starting jotter server...')
server_address = ('127.0.0.1', 8000)
httpd = http.server.HTTPServer(server_address, JotterServer)
httpd.serve_forever()
start_server()
print("hi")
最后一行不会被调用。如何在服务器启动后继续运行代码?
答
以下程序将在新线程中启动服务器并继续执行主线程。主线程将打印嗨控制台。
import http.server
import threading
class JotterServer(http.server.BaseHTTPRequestHandler):
def do_GET(self):
self.send_response(200);
self.send_header('Content-Type', 'text/plain')
self.end_headers()
message = "Howdy"
self.wfile.write(bytes(message, 'utf-8'))
return
def start_server():
print('Starting jotter server...')
server_address = ('127.0.0.1', 8080)
httpd = http.server.HTTPServer(server_address, JotterServer);
thread = threading.Thread(target=httpd.serve_forever);
thread.start();
start_server()
print("hi")
答
你可以试试:
from threading import Thread
...
t=Thread(target=start_server)
t.start()
(而不是start_server()
直接)
答
我想这是serve_forever
因为serve_forever(POLL_INTERVAL = 0.5) :处理请求,直到明确 s hutdown()请求。轮询每个poll_interval秒关闭。 忽略超时属性。如果您需要定期执行任务,请在另一个线程中执行 。
您应该尝试使用httpd.handle_request?