wsgi自带,用语构建简单服务器

from wsgiref.simple_server import make_server

def index(env, res):
res('200 ok', [('Content-Type', 'text/html')])
print(env['PATH_INFO'][1:]) # method = env['REQUEST_METHOD']
body = '<h1>hello %s </h1>' % (env['PATH_INFO'][1:] or 'index')
return [body.encode('utf8')] # 创建服务器
server = make_server('127.0.0.1', 3000, index)
print('Server start at 3000...') # 监听请求
server.serve_forever()

aiohttp基于asyncio实现的HTTP框架

import asyncio
from aiohttp import web @asyncio.coroutine
def index(request):
yield from asyncio.sleep(0.5)
text = '<h1>hello, %s!</h1>' % (request.match_info['name'] or 'index')
return web.Response(body=text.encode('utf8')) @asyncio.coroutine
def init(loop):
app = web.Application(loop=loop)
app.router.add_route('GET', '/{name}', index)
# 创建服务器
srv = yield from loop.create_server(app.make_handler(), '127.0.0.1', 3000)
print('Server started at http://127.0.0.1:3000...')
return srv # 获取EventLoop:
loop = asyncio.get_event_loop()
# 执行coroutine
loop.run_until_complete(init(loop))
# 监听请求
loop.run_forever()

jinja2

  • 简单的模版初始化和使用
from jinja2 import Environment, FileSystemLoader

def init_jinja2():
path = os.path.abspath('.')
env = Environment(loader=FileSystemLoader(path))
return env __template__ = init_jinja2()
....
body = __template__.get_template('example.html').render(**kw).encode('utf-8')
....

aiomysql 为asyncio提供异步mmysql IO的驱动

import asyncio
import aiomysql loop = None @asyncio.coroutine
def connect():
global loop
# 建立连接
conn = yield from aiomysql.connect(
host= '127.0.0.1',
port= 3306,
user= 'root',
password= 'password',
db= 'awesome',
loop= loop)
# 打开游标
cur = yield from conn.cursor()
# 执行SQL语句
yield from cur.execute('SELECT * FROM users')
print(cur.description)
# 获取结果集
r = yield from cur.fetchall()
print(r)
yield from cur.close()
conn.close() loop = asyncio.get_event_loop()
loop.run_until_complete(connect())

python学习6 web开发的更多相关文章

  1. Python学习--20 Web开发

    HTTP格式 HTTP协议是基于TCP和IP协议的.HTTP协议是一种文本协议. 每个HTTP请求和响应都遵循相同的格式,一个HTTP包含Header和Body两部分,其中Body是可选的. HTTP ...

  2. pycharm+python+Django之web开发环境的搭建(windows)

    转载:https://blog.csdn.net/yjx2323999451/article/details/53200243/ pycharm+python+Django之web开发环境的搭建(wi ...

  3. 使用eclipse搭建第一个python+Django的web开发实例

    python+Django的web开发实例   一.创建一个项目如果这是你第一次使用Django,那么你必须进行一些初始设置.也就是通过自动生成代码来建立一个Django项目--一个Django项目的 ...

  4. 【Python】【Web开发】

    # [[Web开发]] ''' 最早的软件都是运行在大型机上的,软件使用者通过“哑终端”登陆到大型机上去运行软件.后来随着PC机的兴起,软件开始主要运行在桌面上,而数据库这样的软件运行在服务器端,这种 ...

  5. Python学习-day18 Web框架

    众所周知,对于所有的Web应用,本质上其实就是一个socket服务端,用户的浏览器其实就是一个socket客户端. ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 1 ...

  6. python +Django 搭建web开发环境初步,显示当前时间

    1.python 的安装 网上很多关于django跟python 开发的资料,这块我正在实习准备用这个两个合起来搞一个基于web 的东西出来现在开始学习,写点东西记录一下心得. 开发环境是window ...

  7. [ Python ] Flask 基于 Web开发 大型程序的结构实例解析

    作为一个编程入门新手,Flask是我接触到的第一个Web框架.想要深入学习,就从<FlaskWeb开发:基于Python的Web应用开发实战>这本书入手,本书由于是翻译过来的中文版,理解起 ...

  8. Python学习之web框架 Flask

    一.通过PIP 安装Flask 1.1 Windows环境安装pip A.首先PIP进入官网(https://pypi.python.org/pypi/pip)下载gz包 B.对gz压缩包进行解压,解 ...

  9. 学习 Laravel - Web 开发实战入门笔记(1)

    本笔记根据 LearnKu 教程边学边记而成.该教程以搭建出一个类似微博的Web 应用为最终成果,在过程中学习 Laravel 的相关知识. 准备开发环境 原教程使用官方推荐的 Homestead 开 ...

随机推荐

  1. 多材质(Shader)实现

    最近在cocos creator上打算写个U3D中shader功能的插件(能在属性面板调整shader属性). 对其中一个功能有点疑惑,就是U3D中一个渲染物体上可以挂多个材质,后来查询了下,一个物体 ...

  2. WCF 服务编程 - 常用绑定

    WCF  定义了5中常用的绑定. 一. 绑定 1.基本绑定: 对应于BasicHttpBinding类.基本绑定能够将WCF服务公开为传统的ASMX Web服务,使得原客户端能够与新的服务协作.如果客 ...

  3. Ajax详解

    一:什么是Ajax AJAX = Asynchronous JavaScript and XML(异步的 JavaScript 和 XML). AJAX 不是新的编程语言,而是一种使用现有标准的新方法 ...

  4. Ubuntu 14.04开发环境初始化

    安装fcitx, fcitx-googlepinyin, 移除默认键盘快捷键. 英文版不要安装系统推荐的语言更新,会使浏览器以及其他的应用的字体变成bitmap. 安装nvidia驱动 安装vim,设 ...

  5. mysql怎么查询一条记录的前一条记录和后一条记录

    上一条:select * from 表 where 数据id<@当前显示数据id order by 数据_id asc) limit 1下一条:select * from 表 where 数据i ...

  6. ecshop后台新功能权限的添加

    1.在后台“推荐管理”里添加“推荐人分成”.“会员分成”两个操作功能以及权限    index.php?act=menu    incluedes/inc_priv.php:权限对照表.inc_men ...

  7. Android下LayoutInflater的使用

    在我们想XML布局文件转换为View对象的时候.我们都会使用LayoutInflate对象.顾名思义咋一眼就能看出来他是布局填充器.那么接下来看看LayoutInfalte的使用 总体分为 Layou ...

  8. SQL SERVER 2008 获取表字段的类型

    SELECT * FROM ( select a.name TABLENAME,b.name FIELDNAME,c.name FIELDTYPE,c.length FIELDLENGTH from ...

  9. WebService -- Java 实现之 CXF ( 添加系统预定义的拦截器)

    1. 概述 CXF允许我们在webservice的in/out位置添加拦截器.拦截器有两大分类,一类是系统预定义的:另一类是自定义拦截器. 2. 在server端添加拦截器. JaxWsServerF ...

  10. hdu 1878

    http://acm.hdu.edu.cn/showproblem.php?pid=1878 题意:就是判断这个图是不是一个欧拉回路的一个题, 思路:我觉得这个题可以用并查集判环加上判断每个点的度就行 ...