2016-12-02 12 views
1

私はこのようなスクリプトがあります。サーバの起動後に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") 

最後の行と呼ばれることは決してありませんが。サーバーの起動後にコードを実行し続けるにはどうすればよいですか?

答えて

2

次のプログラムは、新しいスレッドでサーバーを起動し、メインスレッドを続行します。メインスレッドはコンソールに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") 
0

あなたが試すことができます(代わりに直接start_server()の)

from threading import Thread 
... 
t=Thread(target=start_server) 
t.start() 

0

私はこれが原因のserve_forever

python docsからserve_foreverだと思います(POLL_INTERVAL = 0.5) :明示的に sまで要求を処理するhutdown()リクエスト。 poll_interval秒ごとにシャットダウンのためにポーリングします。 タイムアウト属性を無視します。定期的な作業が必要な場合は、別のスレッドで を実行してください。

おそらくhttpd.handle_requestを試してください。

関連する問題