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

#!usr/bin/env python
# -*- coding:utf-8 -*-
class ConnecttionPool:
__instance = None
def __init__(self):
self.ip = '222.133.177.67'
self.port = ''
self.username = 'odoo'
self.password = '' 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 = ''
self.username = 'odoo'
self.password = ''
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函数的返回值

模拟网站多人登陆单实例

【python之路33】开发模式单例模式及简单的服务器请求框架原理的更多相关文章

  1. Python之路,Day18 - 开发一个WEB聊天来撩妹吧

    Python之路,Day18 - 开发一个WEB聊天来撩妹吧   本节内容: 项目实战:开发一个WEB聊天室 功能需求: 用户可以与好友一对一聊天 可以搜索.添加某人为好友 用户可以搜索和添加群 每个 ...

  2. C#开发模式——单例模式

    一.单例模式简介 单例模式是为保证一个对象,在程序运行的任何时刻只有一个实例存在,我们把这种实现方式称之为“单例模式”. 二.单例模式的核心 单例类只有一个实例存在 单例类提供一个全局访问点 单例类通 ...

  3. JSP开发模式1(简单注册功能)

    ———————————————————————————————————————————————— import java.util.regex.Matcher;import java.util.reg ...

  4. KoaHub平台基于Node.js开发的Koa的简单包装到请求库的类似接口

    co-request co-request promisify wrapper for request co-request Simple wrapper to the request library ...

  5. webpack+react+es6开发模式

    一.前言 实习了两个月,把在公司用到的前端开发模式做个简单的整理.公司里前端开发模式webpack+react+redux+es6,这里去掉了redux. webpack, react, redux等 ...

  6. struts2的DevMode(开发模式)模式

    本文转自:http://blog.csdn.net/q1054261752/article/details/48687119 在实际应用开发或者是产品部署的时候,对应着两种模式: ① 开发模式(dev ...

  7. SSH开发模式——Struts2(第一小节)

    在制定了学习计划的学习过程中,我感觉学习还是很有效率的.很短的时间内,我便学习完了JavaWeb的连接池.DbUtils框架及其一些工具类的使用. 学无止境,学习这些知识还远远不够,所以,在接下来的时 ...

  8. 大前端快闪二:react开发模式 一键启动多个服务

    最近全权负责了一个前后端分离的web项目,前端使用create-react-app, 后端使用golang做的api服务. npx create-react-app my-app cd my-app ...

  9. Python之路,Day20 - 分布式监控系统开发

    Python之路,Day20 - 分布式监控系统开发   本节内容 为什么要做监控? 常用监控系统设计讨论 监控系统架构设计 监控表结构设计 为什么要做监控? –熟悉IT监控系统的设计原理 –开发一个 ...

随机推荐

  1. UBOOT命令简写说明

    所以命令都可以简写,只要命令前面的一部分不会跟其它命令相同,就可以不用写全整个命令. save 命令 CRANE2410 # sa Saving Environment to Flash... Un- ...

  2. 1、docker centos 安装

    Docker for CentOS: 第一步:使用官方yum仓库 [root@linux-node1 ~]# yum install -y yum-utils [root@linux-node1 ~] ...

  3. javascript特效源码(2、图像特效)

    1.不停闪烁的图像 不停闪烁的图片[修改显示的图片及链接地址后根据说明进行共1步] 1.以下代码放在一个新建页面的HTML的<body></body> 区即可:[页面上必须什么 ...

  4. LeetCode第一题—— Two Sum(寻找两数,要求和为target)

    题目描述: Given an array of integers, return indices of the two numbers such that they add up to a speci ...

  5. CentOS6.3搭建ZooKeeper伪集群

    1. 将zookeeper安装包移动至/home, 解压后改名为zookeeper 相关命令 # 解压 .tar.gz # 重命名 zookeeper 2. 进入zookeeper/conf/目录下, ...

  6. antidependence and data hazard

    See below example. ADDD  F6, F0, F8 SUBD   F8, F10, F14 Some article would say that “ There’s an ant ...

  7. memcache课程---4、php+memcache如何让用户跨域登录

    memcache课程---4.php+memcache如何让用户跨域登录 一.总结 一句话总结: 让所有服务器共用一台memcache缓存,即可达到跨域的目的 1.session跨域:修改php配置文 ...

  8. iOS开发NSFetchedResultsController的使用CoreData和TableView数据同步更新

    1.效果 2.代码 #import "ViewController.h" #import "Student+CoreDataProperties.h" #def ...

  9. 03jQuery对象初识(二)筛选器2

    1.下面的筛选都是非常常用的 <ul> <li id="l0">l0</li> <li>l1</li> <li&g ...

  10. js 属性的遍历

    引自:http://es6.ruanyifeng.com/#docs/object 属性的遍历 ES6 一共有5种方法可以遍历对象的属性. (1)for...in for...in循环遍历对象自身的和 ...