如何解决为什么我的 pyhhont 网络服务器不起作用?
我想制作一个带日志记录的多线程python web服务器我写了这段代码,它没有错误,但它没有显示页面,也没有在日志文件中写任何东西,我不知道哪个部分是错误的
from http.server import BaseHTTPRequestHandler,HTTPServer
from socketserver import ThreadingMixIn
from os import curdir,sep
port_number=8080
class myhandler(BaseHTTPRequestHandler):
def do_GET(self):
if self.path=="/":
self.path="/a1.html"
try:
sendrep=False
if self.path.endswith(".html"):
sendrep-True
mimetype='text/html'
if self.path.endswith(".jpg"):
sendrep-True
mimetype='image/jpg'
if self.path.endswith(".gif"):
sendrep-True
mimetype='image/jpg'
if self.path.endswith(".js"):
sendrep-True
mimetype='application/javascript'
if self.path.endswith(".css"):
sendrep-True
mimetype='text/css'
if sendrep==True:
f=open(curdir+sep+self.path)
self.send_response(200)
self.send_header('content-type',mimetype)
self.end_headers()
self.wfile.write(f.read())
f.close()
return
except IOError:
self.send_error(404,'file not found: %s' % self.path)
log_file = open('logfile.txt','w')
def log_message(self,format,*args):
self.log_file.write("%s - - [%s] %s %s\n" %(self.client_address[0],self.log_date_time_string(),curdir+sep+self.path,format%args))
class ThreadedHTTPServer(ThreadingMixIn,HTTPServer):
"""Handle requests in a separate thread."""
print("asb")
try:
server=ThreadedHTTPServer(('127.0.0.1',8080),myhandler)
server.serve_forever()
except KeyboardInterrupt:
if KeyboardInterrupt:
print('shut down the server')
server.socket.close()
解决方法
两件事:
-
有几行
sendrep-True
,这不是语法错误,而是无用的语句。它应该是sendrep = True
(等于而不是减号)。 -
您还以二进制模式打开文件:
f=open(curdir+sep+self.path,"br")
否则您将得到TypeError: a bytes-like object is required,not 'str'
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。