Python3怎么开启自带http服务
这篇文章主要介绍了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服务”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注亿速云行业资讯频道。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。