使用非常簡單BaseHttpServer(下面的代碼),我遇到了以下問題:Python SimpleHttpServer後臺錯誤?
使用./testserver.py &
開始在後臺服務器工作正常,在端口12121的服務器響應。當我輸入disown
時,服務器仍然響應。在test.log
步驟與輸入/輸出錯誤關閉服務器停止終端的下一個請求之後重構後:
$ ./testserver &
$ bg
$ disown
靠近終端,發送到服務器的請求 - >服務器沒有響應。
我發現的唯一的解決辦法是重定向stdout
和stderr
: $ ./testserver>的/ dev/null的2> 或@Daniel換句話說與nohup
必須調用它通常的方式任何人都曾經遇到過這個bug,或者爲什麼在沒有輸出的情況下HttpServer會崩潰?
testserver.py
#! /usr/bin/env python
import time
import BaseHTTPServer
HOST_NAME = '0.0.0.0'
PORT_NUMBER = 12121
class MyHandler(BaseHTTPServer.BaseHTTPRequestHandler):
def do_HEAD(s):
s.send_response(200)
s.send_header("Content-type", "text/html")
s.end_headers()
def do_GET(s):
"""Respond to a GET request."""
s.send_response(200)
s.send_header("Content-type", "text/html")
s.end_headers()
s.wfile.write("MANUAL SERVER SUCCESS")
if __name__ == '__main__':
server_class = BaseHTTPServer.HTTPServer
httpd = server_class((HOST_NAME, PORT_NUMBER), MyHandler)
try:
httpd.serve_forever()
except Exception as e:
with open('test.log', 'w') as f:
f.write(str(e))
你對這兩點都是正確的,相應地改變了代碼(只是忘記了'write'沒有使用'__str__'方法,然後我確實得到了'Input/outpu error'。如果沒有可能的輸出,爲什麼它是希望HttpServer崩潰的行爲 – ProfHase85