这篇文章主要介绍了Python3怎么开启自带http服务的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Python3怎么开启自带http服务文章都会有所收获,下面我们一起来看看吧。

开启Web服务1.基本方式

Python中自带了简单的服务器程序,能较容易地打开服务。

在python3中将原来的SimpleHTTPServer命令改为了http.server,使用方法如下:

1. cd www目录

2. python -m http.server

开启成功,则会输出“Serving HTTP on 0.0.0.0 port 8000 (http://0.0.0.0:8000/) …”,表示在本机8000端口开启了服务。

如果需要后台运行,可在命令后加"&"符号,Ctrl+C不会关闭服务,如下:

python-mhttp.server&

如果要保持服务,则在命令前加nohup以忽略所有挂断信号,如下:

nohuppython-mhttp.server80012.指定端口

如果不使用默认端口,可在开启时附带端口参数,如:

python-mhttp.server8001

则会在8001端口打开http服务。

使用Web服务

可以使用http://0.0.0.0:8000/查看www目录下的网页文件,若无index.html则会显示目录下的文件。

也可以使用ifconfig命令查看本机IP并使用。

补充:python创建http服务

背景

用java调用dll的时候经常出现 invalid memory access,改用java-Python-dll,

Python通过http服务给java提供功能。

环境

Python3.7

通过 http.server.BaseHTTPRequestHandler 来处理请求,并返回response

打印日志

filename为输入日志名称,默认是同目录下,没有该文件会新创建

filemode a 是追加写的模式,w是覆盖写

importlogginglogging.basicConfig(level=logging.INFO,format='%(asctime)s%(filename)s[line:%(lineno)d]%(levelname)s%(message)s',filename="hhh.txt",filemode='a')logging.info("xxxx")调用dll

pchar - ctypes.c_char_p

integer 用了 bytes(0),byref(ctypes.c_void_p(0)) 都OK,没有更深入去研究,如有错误请指正。

importctypesfromctypesimport*dll=ctypes.windll.LoadLibrary('C:\xxx\xxx.dll')print("dll版本号为:"+str(dll.GetVersion()))name=ctypes.c_char_p(b"gc")roomno=ctypes.c_char_p(bytes(room.encode("utf-8")))begintime=ctypes.c_char_p(bytes(begin.encode("utf-8")))endtime=ctypes.c_char_p(bytes(end.encode("utf-8")))cardno=ctypes.c_void_p(0)dll.invoke...http方案一

要注意 必须有 response = response_start_line + response_headers + “” + response_body

拼接应答报文后,才能给浏览器正确返回

#coding:utf-8importsocketfrommultiprocessingimportProcessdefhandle_client(client_socket):#获取客户端请求数据request_data=client_socket.recv(1024)print("request:",request_data)#构造响应数据response_start_line="HTTP/1.1200OK"response_headers="Server:Myserver"response_body="helloWorld!"response=response_start_line+response_headers+""+response_bodyprint("response:",response)#向客户端返回响应数据client_socket.send(bytes(response,"utf-8"))#关闭客户端连接client_socket.close()if__name__=="__main__":server_socket=socket.socket(socket.AF_INET,socket.SOCK_STREAM)server_socket.bind(("",8888))server_socket.listen(120)print("success")whileTrue:client_socket,client_address=server_socket.accept()print("[%s,%s]用户连接上了"%client_address)handle_client_process=Process(target=handle_client,args=(client_socket,))handle_client_process.start()client_socket.close()完整代码

另外一种http方式

#-.-coding:utf-8-.-fromhttp.serverimportHTTPServerimportctypesfromctypesimport*#HTTPRequestHandlerclassimporthttp.serverimportsocketserverimportlogging#pyinstaller-FclasstestHTTPServer_RequestHandler(http.server.BaseHTTPRequestHandler):#GETdefdo_GET(self):logging.error('startmake')str2=str(self.path)print("revice:"+str2)if"xxx"instr2:#todo你的具体业务操作if"xxx"instr2:print("hahaha")logging.error('hahaha')#response_body="0"self.send_response(200)#Sendheadersself.send_header('Content-type','text/html')self.end_headers()#Sendmessagebacktoclientmessage="Helloworld!"#Writecontentasutf-8dataself.wfile.write(bytes(message,"utf8"))returnelse:print("1else")self.send_response(200)#Sendheadersself.send_header('Content-type','text/html')self.end_headers()#Sendmessagebacktoclientmessage="Helloworld222333!"#Writecontentasutf-8dataself.wfile.write(bytes(message,"utf8"))returndefrun():print('startingserver...')logging.basicConfig(level=logging.INFO,format='%(asctime)s%(filename)s[line:%(lineno)d]%(levelname)s%(message)s',filename="http_make_card.txt",filemode='a+')#Serversettingsserver_address=('127.0.0.1',8888)httpd=HTTPServer(server_address,testHTTPServer_RequestHandler)print('runningserver...')httpd.serve_forever()run()打包exe

pipinstallpyinstaller

pyinstaller -F xxx.py 即可,当前目录下生成

1、No module named ‘http.server'; ‘http' is not a package

当时自己建了一个py叫http,删掉后正常

2、UnicodeDecodeError: ‘utf-8' codec can't decode byte 0xce in position 130: invalid continuat

另存为utf-8即可

关于“Python3怎么开启自带http服务”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“Python3怎么开启自带http服务”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注亿速云行业资讯频道。