【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监控系统的设计原理 –开发一个 ...
随机推荐
- idea设置编码格式utf-8
settings >> File Encodings >>如下
- JS规则 编程练习 考考大家的数学,计算以下计算公式的结果。然后在浏览器中运行一下,看看结果是否跟你的结果一致。
编程练习 考考大家的数学,计算以下计算公式的结果.然后在浏览器中运行一下,看看结果是否跟你的结果一致. 任务 第一步: 在 ? 处填写你的答案. 第二步: 填写完成后,运行一下,看看是不是跟你填写的 ...
- vue element传的值报_self.$scopedSlots.default is not a function
问题描述:使用表格时做了v-if判断:首次渲染没有问题:反复操作便会报错: 解决办法:el-table上给v-if的 el-table-colunm 加上:key="Math.random( ...
- go语言基本运算符
go语言基本运算符 1.算术运算符 以下假设A=10,B=20: 2.关系运算符 以下假设A=10,B=20: 3.逻辑运算符 以下假设A=true,B=false: 4.位运算符 十进制转二进制: ...
- VC操作Excel之基本操作(颜色等)【转载】
文章出处https://blog.csdn.net/form88/article/details/78566390 EXCEL里如何知道某种颜色的ColorIndex的值 ===fag::====== ...
- iscroll 上拉加载和下拉刷新
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <meta name ...
- RvmTranslator7.2
1. RvmTranslator7.2 增加一个视图方块,方便视图切换; Download: https://github.com/eryar/RvmTranslator/releases/tag/7 ...
- Java 使用JDBC连接MySQL
// 这学期本来不打算深入学习Java的,课上的小项目也就随便写了一个简单计算器和扫雷游戏就糊弄过去.可是我们的Eliza老师偏偏什么都讲了,考虑到期末也会涉及到JDBC的内容,前些天试着学习一番. ...
- Struts2转换器
为什么进行类型转换 在基于HTTP协议的Web应用中 客户端请求的所有内容都以文本编码方式传输到服务器端 服务器端的编程语言却有着丰富的数据类型 继承StrutsTypeConverter抽象类 继承 ...
- java浮点运算的陷阱
首先呢,i你要明白double和float. Inifinity: 例如:syso(5.0/0.0+" 和"+0.0 /0.0); 浮点运算的0.0不是真正意义上的0,而是非常接近 ...