编写Web App骨架——Python实战:Web App 开发 Day 02

1. 背景介绍

Python 的功能十分强大,因其强大而丰富的开源包,让其可以实现高级爬虫,可以实现机器学习算法,可以应用到深度学习中,也可以开发Web App 项目。

本次的Python实战就是Web App 项目的开发,项目素材和代码大部分来源于廖雪峰老师的python教程,一共为期16天,博主会对代码做详细的讲解,包括代码的详细注释和原理;博主在实战这个项目过程中,发现廖雪峰老师的代码是比较早的了,python的更新是十分快速的,因此博主也会对此做出更新和讲解。

2. 编写Web App骨架——Python实战:Web App 开发 Day 02

# 2.1 开始编写

由于我们的Web App建立在 asyncio 的基础上,因此用 aiohttp 写一个基本的 app.py ,以下是廖雪峰老师教程中的代码,但是存在很多问题,

  1. 在web.Response(body=b’<h1>Awesome</h1>’) 中未设置转码和头信息,导致最终点击 http://127.0.0.1:9000 是一个二进制的文件下载;
  2. app.make_handler() 这种方式已经太过于老旧,运行会报警告;
  3. 在aiohttp中使用yield from方式太过于老旧,如果实在要用下面代码方式的话建议改为 async 和await。
    感兴趣的同学可以看看
import logging; logging.basicConfig(level=logging.INFO)

import asyncio, os, json, time
from datetime import datetime

from aiohttp import web

def index(request):
    return web.Response(body=b'<h1>Awesome</h1>')

@asyncio.coroutine
def init(loop):
    app = web.Application(loop=loop)
    app.router.add_route('GET', '/', index)
    srv = yield from loop.create_server(app.make_handler(), '127.0.0.1', 9000)
    logging.info('server started at http://127.0.0.1:9000...')
    return srv

loop = asyncio.get_event_loop()
loop.run_until_complete(init(loop))
loop.run_forever()

下面是我个人的实现代码,这也是报警告信息中提供的一种方式,相对简单很多。

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# @Time    : 2019/1/9 11:15
# @Author  : Arrow and Bullet
# @FileName: app.py
# @Software: PyCharm
# @Blog    :https://blog.csdn.net/qq_41800366
import logging  # 导入logging模块
from aiohttp import web

logging.basicConfig(level=logging.INFO)  # 配置logging的基本信息, level=logging.INFO,记录INFO及以上的日志


def index(request):
    return web.Response(body='<h1>AWesome</h1>'.encode('utf-8'), content_type='text/html')


def init():
    app = web.Application()
    app.router.add_route('GET', '/', index)
    web.run_app(app, host='127.0.0.1', port=9000)
    logging.info('server started at http://127.0.0.1:9000...')


init()

运行python app.py,Web App将在9000端口监听HTTP请求,并且对首页/进行响应。

======== Running on http://127.0.0.1:9000 ========
(Press CTRL+C to quit)

这里我们简单地返回一个Awesome字符串,在浏览器中可以看到效果:
在这里插入图片描述
这说明我们的Web App骨架已经搭好了,可以进一步往里面添加更多的东西。

下面连接是在搭建骨架中用到的模块详解,可点击查看

Python中 logging 模块 详解
Python中 asyncio 模块 详解

点击查看:搭建开发环境——Python实战:Web App 开发 Day 01

希望能够帮助到大家,有什么问题可以 直接评论即可,喜欢有用的话可以点个赞让更多的人看到,如果不够详细的话也可以说,我会及时回复的。

猜你喜欢

转载自blog.csdn.net/qq_41800366/article/details/86076282