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. 简单搭建dubbo

    为什么要用dubbo? 当网站规模达到了一定的量级的时候,普通的MVC框架已经不能满足我们的需求,于是分布式的服务框架和流动式的架构就凸显出来了.     单一应用架构 当网站流量很小时,只需一个应用 ...

  2. 7款外观迷人的HTML5/CSS3 3D特效按钮特效

    下面我整理了7款外观都十分迷人的HTML5/CSS3 3D按钮特效,有几个还挺实用的,分享给大家. 1.CSS3超酷3D弹性按钮 按钮实现非常简单 之前我们分享过几款不错的CSS3 3D立体按钮,比如 ...

  3. AM8 自定义表情包的实现方法

    AM8 自定义表情包的实现方法 效果描述 AM8 安装后,在\Activesoft\AMm8\emotions 目录内存储的是默认的表情符号.但有的时候我们需要增加一些新的表情符号,AM8 系统支持自 ...

  4. leetcode-第五场双周赛-1134-阿姆斯特朗数

    第一次提交: class Solution: def isArmstrong(self, N: int) -> bool: n = N l = len(str(N)) res = 0 while ...

  5. Ubuntu GitHub操作——使用仓库

    若你想更新github代码 在正式更新github仓库时,可以先 git status 查看一下分支master的状态 1.因为是更新代码,所以不用前面那么多步骤,直接添加所更新的文件到 分支mast ...

  6. 解决MySQL登录ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using passwor)问题

    问题描述 今天在MAC上安装完MySQL后,MYSQL默认给分配了一个默认密码,但当自己在终端上使用默认密码登录的时候,总会提示一个授权失败的错误:Access denied for user ‘ro ...

  7. codeforces 1099E-Nice table

    传送门:QAQQAQ 题意:给你一个矩阵只有AGCT,若对于每一个2*2的子矩阵中的四个字母互不相同,则称为这个矩阵是nice的,问至少变矩阵中的几个点可以使矩阵变nice 思路:没什么思路……就是大 ...

  8. NYOJ--860 又见01背包(01背包)

    题目http://acm.nyist.net/JudgeOnline/problem.php?pid=860 分析:题目和普通的01背包问题一样,但是唯一不同的是数据的特殊性. 如果10^9根本就开辟 ...

  9. INI文件读写类

    public class INIClass { public string inipath; [DllImport("kernel32")] private static exte ...

  10. hive新加入字段插入数据需要注意事项

    hive中新加字段需要注意如下 1)如果表中有分区字段,必须先删除分区才能插入数据否则为null; 2)insert override TABLE table1 select counm1,counm ...