【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 = ''
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】开发模式单例模式及简单的服务器请求框架原理的更多相关文章
- Python之路,Day18 - 开发一个WEB聊天来撩妹吧
Python之路,Day18 - 开发一个WEB聊天来撩妹吧 本节内容: 项目实战:开发一个WEB聊天室 功能需求: 用户可以与好友一对一聊天 可以搜索.添加某人为好友 用户可以搜索和添加群 每个 ...
- C#开发模式——单例模式
一.单例模式简介 单例模式是为保证一个对象,在程序运行的任何时刻只有一个实例存在,我们把这种实现方式称之为“单例模式”. 二.单例模式的核心 单例类只有一个实例存在 单例类提供一个全局访问点 单例类通 ...
- JSP开发模式1(简单注册功能)
———————————————————————————————————————————————— import java.util.regex.Matcher;import java.util.reg ...
- KoaHub平台基于Node.js开发的Koa的简单包装到请求库的类似接口
co-request co-request promisify wrapper for request co-request Simple wrapper to the request library ...
- webpack+react+es6开发模式
一.前言 实习了两个月,把在公司用到的前端开发模式做个简单的整理.公司里前端开发模式webpack+react+redux+es6,这里去掉了redux. webpack, react, redux等 ...
- struts2的DevMode(开发模式)模式
本文转自:http://blog.csdn.net/q1054261752/article/details/48687119 在实际应用开发或者是产品部署的时候,对应着两种模式: ① 开发模式(dev ...
- SSH开发模式——Struts2(第一小节)
在制定了学习计划的学习过程中,我感觉学习还是很有效率的.很短的时间内,我便学习完了JavaWeb的连接池.DbUtils框架及其一些工具类的使用. 学无止境,学习这些知识还远远不够,所以,在接下来的时 ...
- 大前端快闪二:react开发模式 一键启动多个服务
最近全权负责了一个前后端分离的web项目,前端使用create-react-app, 后端使用golang做的api服务. npx create-react-app my-app cd my-app ...
- Python之路,Day20 - 分布式监控系统开发
Python之路,Day20 - 分布式监控系统开发 本节内容 为什么要做监控? 常用监控系统设计讨论 监控系统架构设计 监控表结构设计 为什么要做监控? –熟悉IT监控系统的设计原理 –开发一个 ...
随机推荐
- CSRF spring mvc 跨站请求伪造防御(转)
CSRF CSRF(Cross-site request forgery跨站请求伪造,也被称为“One Click Attack”或者Session Riding,通常缩写为CSRF或者XSRF,是一 ...
- C++开发系列-纯虚函数和抽象类
概念 纯虚函数和抽象类 纯虚函数是一个在基类中说明的虚函数,在基类中没有定义,要求任何派生类都实现该函数. 纯虚函数为各派生类提供了一个公共界面(接口的封装和设计.软件的模块功能的划分) 纯虚函数说明 ...
- PHP网络请求优化
目录 1. 设置超时时间 2. 将串行请求并行化 1. 设置超时时间 连接超时:200ms 读超时: 800ms 写超时: 500ms 2. 将串行请求并行化 使用curl_multi_*() 使用s ...
- LINUX挂接移动硬盘
对linux系统而言,USB接口的移动硬盘是当作SCSI设备对待的.插入移动硬盘之前,应先用fdisk –l 或 more /proc/partitions查看系统的硬盘和硬盘分区情况. [root ...
- android 使用现成做get请求
//接受子线程发来的消息 Handler hanler = new Handler() { @Override public void handleMessage(Message msg) { // ...
- 高速网络下的http协议优化
http协议是基于TCP协议,具备TCP协议的所有功能.但是与一般TCP的长连接不同的是http协议往往连接时间比较短,一个请求一个响应了事.但是总所周知,TCP协议除了具备可靠的传输以外,还有拥塞控 ...
- ThinkPHP 数据更新
ThinkPHP的数据更新操作包括更新数据和更新字段方法. 直线电机厂家 更新数据 更新数据使用save方法,例如: $User = M("User"); // 实例化User对象 ...
- 第十章 Odoo 12开发之后台视图 - 设计用户界面
本文将学习如何为用户创建图形化界面来与图书应用交互.我们将了解不同视图类型和小组件(widgets)之间的差别,以及如何使用它们来提供更优的用户体验. 本文主要内容有: 菜单项 窗口操作(Window ...
- java.sql.SQLException
java.sql.SQLException 出错:java.sql.SQLException: com.mchange.v2.c3p0.ComboPooledDataSource[ identityT ...
- 05_jQuery对象初识(三)登录案例
1.案例需求:点击登录按钮验证用户名和密码都不为空,为空就在对应的input标签下面显示一个错误的提示信息. 1.给登录的按钮绑定点击事件 2.点击事件要做的事情 1.找到input标签.取值.判断是 ...