使用Python怎么实现一个Web静态服务器非堵塞模式

  介绍

使用Python怎么实现一个Web静态服务器非堵塞模式?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

Python主要应用领域有哪些

1,云计算,典型应用OpenStack.2,网前端开发,众多大型网站均为Python开发。3。人工智能应用,基于大数据分析和深度学习而发展出来的人工智能本质上已经无法离开python.4,系统运维工程项目,自动化运维的标配就是python + Django/flask.5,金融理财分析,量化交易,金融分析。6,大数据分析。

<强>单进程非堵塞模型

#=utf - 8编码   得到socket  import  *   import 时间   #,用来存储所有的新链接的插座   g_socket_list =,列表()   def  main ():   server_socket 才能=,插座(AF_INET, SOCK_STREAM)   server_socket.setsockopt才能(SOL_SOCKET, SO_REUSEADDR ,, 1)   server_socket.bind才能((& # 39;& # 39;,,7890))   server_socket.listen才能(128)   #,才能将套接字设置为非堵塞   #,才能设置为非堵塞后,如果接受时,恰巧没有客户端连接,那么接受会   #,才能产生一个异常,所以需要尝试来进行处理   server_socket.setblocking才能(假)   while 才能正确的:   ,,,#,用来测试   ,,,time . sleep (0.5)   ,,,试一试:   ,,,,,newClientInfo =, server_socket.accept ()   ,,,except  Exception  as 结果:   ,,,,,   ,,,:   ,,,,,印刷(“一个新的客户端到来:% s", %, str (newClientInfo))   ,,,,,newClientInfo [0] .setblocking (False), #,设置为非堵塞   ,,,,,g_socket_list.append (newClientInfo)   ,,,for  client_socket,, client_addr 拷贝g_socket_list:   ,,,,,试一试:   ,,,,,,,recvData =, client_socket.recv (1024)   ,,,,,,,if  recvData:   ,,,,,,,,,印刷(& # 39;recv (% s): % & # 39;, %, (str (client_addr), recvData))   ,,,,,,,其他的:   ,,,,,,,,,印刷(& # 39;(% s)客户端已经关闭& # 39;,%,str (client_addr))   ,,,,,,,,,client_socket.close ()   ,,,,,,,,,g_socket_list.remove ((client_socket client_addr))   ,,,,,except  Exception  as 结果:   ,,,,,,,   ,,,印刷(g_socket_list), #, for 测试   if  __name__ ==, & # 39; __main__ # 39;:   以前,,main ()

<强> web静态服务器——单进程非堵塞

import 时间   import 套接字   import 系统   import 再保险   class  WSGIServer(对象):   “““才能定义一个WSGI服务器的类“““   def 才能;__init__(自我,,港口,documents_root):   ,,,#,1只创建套接字   ,,,self.server_socket =, socket.socket (socket.AF_INET, socket.SOCK_STREAM)   ,,,#,2只绑定本地信息   ,,,self.server_socket.setsockopt (socket.SOL_SOCKET, socket.SO_REUSEADDR,, 1)   ,,,self.server_socket.bind((““,,端口))   ,,,#,3只变为监听套接字   ,,,self.server_socket.listen (128)   ,,,self.server_socket.setblocking(假)   ,,,self.client_socket_list =,列表()   ,,,self.documents_root =documents_root   def 才能run_forever(自我):   ,,,“““运行服务器“,“   ,,,#,等待对方链接   ,,,while 正确的:   ,,,,,#,time . sleep (0.5), #, for 测试   ,,,,,试一试:   ,,,,,,,,,new_socket new_addr =, self.server_socket.accept ()   ,,,,,except  Exception  as 随著:   ,,,,,,,印刷(“1 - - - - - - - - - -“,,随著,#,for 测试   ,,,,,其他的:   ,,,,,,,new_socket.setblocking(假)   ,,,,,,,self.client_socket_list.append (new_socket)   ,,,,,for  client_socket 拷贝self.client_socket_list:   ,,,,,,,试一试:   ,,,,,,,,,request =, client_socket.recv (1024) .decode (& # 39; utf - 8 # 39;)   ,,,,,,,except  Exception  as 随著:   ,,,,,,,,,印刷(“2 - - - - - - - - - - -“,,随著,#,for 测试   ,,,,,,,其他的:   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null

使用Python怎么实现一个Web静态服务器非堵塞模式