python发布_python网站发布

  • Post author:
  • Post category:python


“””/etc/python3

@File : IO_HTTP.py

@Time : 2020/7/18 下午3:26

@Author : wangyongqi

@Email : 92644827@qq.com

@SOftware : PyCharm”””

from socket import *

from select import *

importreclassWebServer:def __init__(self,host=’0.0.0.0′,port=8000,html=None):

self.host=host

self.port=port

self.html=html#做IO多路复用的并发模型

self.__rlist=[]

self.__wlist=[]

self.__xlist=[]

self.create_socket()

self.bind()defcreate_socket(self):

self.sock=socket()

self.sock.setblocking(False)defbind(self):

self.address=(self.host,self.port)

self.sock.bind(self.address)defstart(self):

self.sock.listen(5)print(‘Listen the port %d’%self.port)

self.__rlist.append(self.sock)whileTrue:

rs,ws,xs=select(self.__rlist,self.__wlist,self.__xlist)for r inrs:if r isself.sock:

connfd,addr=self.sock.accept()

connfd.setblocking(False)

self.__rlist.append(connfd)else:

self.handle(r)#处理客户请求

defhandle(self,connfd):

request=connfd.recv(1024*1024).decode(‘utf8’)

pattern='[A-Z]+\s+(?P/\S*)’result=re.match(pattern,request)ifresult:

info=result.group(‘info’)

self.send_requst(connfd,info)else:#断开客户端

self.__rlist.remove(connfd)

connfd.close()defsend_requst(self,connfd,info):try:

html= open(self.html+info,’rb’)print(html)except:

hsstml= “””/HTTP/1.1 200 ok

Content-tpe text/html

404″””connfd.send(hsstml.encode())

self.__rlist.remove(connfd)else:

html=html.read()

hsstml= “/HTTP/1.1 200 ok\r\n”hsstml+=”Content-tpe text/html\r\n”hsstml+=”Content-Length:%d\r\n”%len(html)

hsstml+=’\r\n’hsstml=hsstml.encode()

hsstml+=html

connfd.send(hsstml)

self.__rlist.remove(connfd)

connfd.close()#html=html.read()

#url=info[1:]

#if url==”:

#hsstml = “””/HTTP/1.1 200 ok

#Content-tpe text/html

# #404

#”””

#connfd.send(hsstml.encode())

#self.__rlist.remove(connfd)

# #else:

#try:

#html=open(url)

#except FileNotFoundError:

#hsstml = “””/HTTP/1.1 200 ok

#Content-tpe text/html

# #404

#”””

#connfd.send(hsstml.encode())

#self.__rlist.remove(connfd)

#else:

#html=html.read()

#hsstml = f”””/HTTP/1.1 200 ok

#Content-tpe text/html

# #{html}

#”””

#connfd.send(hsstml.encode())

#self.__rlist.remove(connfd)

if __name__ == ‘__main__’:”””1.使用流程

2.那些量需要用户决定,怎么传入

那组网页 服务端地址”””httpd=WebServer(host=’0.0.0.0′,port=8578,html=’static’)

httpd.start()