zoukankan      html  css  js  c++  java
  • 【python之路33】开发模式单例模式及简单的服务器请求框架原理

    1、单例模式指的是创建单个实例,例如:数据库连接池中包含10个数据库连接,用户访问数据时随机从连接池中拿出一个进行连接,其他用户再次访问时不再创建对象进行连接

    #!usr/bin/env python
    # -*- coding:utf-8 -*-
    class ConnecttionPool:
        __instance = None
        def __init__(self):
            self.ip = '222.133.177.67'
            self.port = '3306'
            self.username = 'odoo'
            self.password = '123456'
    
            self.con_list = [1,2,3,4,5,6,7,8,9,10]
        @staticmethod
        def get_instance():  #创建实例的方法
            if ConnecttionPool.__instance:
                return ConnecttionPool.__instance
            else:
                ConnecttionPool.__instance = ConnecttionPool()
                return ConnecttionPool.__instance
        def get_connection(self):
            #获得连接
            import random
            r = self.con_list[random.randrange(1,10)]
            return r
    
    for i in range(10):
        pool = ConnecttionPool.get_instance()
        print('去连接池',pool,'获得一个连接')
        r = pool.get_connection()
        print('获得的连接是:',r)
    单例模式

    2、简单的服务器请求框架

    代码需要在2.7版本下运行

    #!usr/bin/env python
    # -*- coding:utf-8 -*-
    from wsgiref.simple_server import make_server
    
    def RunServer(environ,start_response):
        start_response(status='200 OK',headers=[('Content-Type','text/html')])
        url = environ['PATH_INFO']  #url取的是访问时端口号后面的地址
        return '谢谢你的访问!'  #可以读取html文件
    
    
    if __name__ == '__main__':
        httpd = make_server('',8000,RunServer)
        print('Server Http on 8000......')
        httpd.serve_forever()  #循环监听访问,当有访问时,返回RunServer函数的返回值
    网站服务器监听代码

     3、服务器网站;且模拟多人访问创建一个连接实例,并且随机取连接线路

    #!usr/bin/env python
    # -*- coding:utf-8 -*-
    class ConnectionPool:
        ins = None
        def __init__(self):
            self.ip = '202.102.154.3'
            self.port = '3306'
            self.username = 'odoo'
            self.password = '123456'
            self.connections = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
        def get_connection(self):
            import random
            i = random.randrange(0,10)
            return self.connections[i]
        @staticmethod
        def get_instance():
            if ConnectionPool.ins:
                return ConnectionPool.ins
            else:
                re = ConnectionPool()
                ConnectionPool.ins = re
                return re
    
    from wsgiref.simple_server import make_server
    
    def RunServer(environ,start_response):
        start_response(status='200 OK',headers=[('Content-Type','text/html')])
        url = environ['PATH_INFO']  #url取的是访问时端口号后面的地址
        pool = ConnectionPool.get_instance()
        print(pool)
        cnn = pool.get_connection()
        print(cnn)
        return_text = '谢谢你的访问!%s-%s' %(pool,cnn)
        return return_text  #可以读取html文件
    
    
    if __name__ == '__main__':
        httpd = make_server('',8000,RunServer)
        print('Server Http on 8000......')
        httpd.serve_forever()  #循环监听访问,当有访问时,返回RunServer函数的返回值
    模拟网站多人登陆单实例
  • 相关阅读:
    robotframework eclipse Robot Reference libraries不显示(selenium library无法导入)问题解决办法
    Navicat_Keygen_Patch 5.6如何使用
    电子标签拣货系统DPS
    matplotlib中的bar图
    Windows 10 清除文件
    npm包的上传npm包的步骤,与更新和下载步骤
    深入理解JWT的使用场景和优劣
    关于Vue.js去掉#号路由
    关于sklearn中的导包交叉验证问题
    python函数作用域
  • 原文地址:https://www.cnblogs.com/sunshuhai/p/6539655.html
Copyright © 2011-2022 走看看