python web框架的基础:WSGI、uWSGI、Nginx、web框架的关系

在这里插入图片描述

WSGI

WSGI ,全称是 Web Server Gateway Interface(Web服务器网关接口)

  • Python 中定义的一个网关协议,规定了 Web Server 如何跟应用程序交互 。
    在 Python 中所有 Web Server 程序,能够通过 统一的协议(WSGI协议) 跟 Web 框架或者说 Web 应用进行交互 。

WSGI的底层:通过socket编程实现 Web 服务

Web服务最基本的模型 , 通过 socket 和 HTTP 协议提供 Web 服务。

监听本地 8000 端口 ,接收客户端发过来的数据 ,然后返回对应的 HTTP 响应。

import socket


EOL1 = b'\n\n'
EOL2 = b'\n\r\n'
body = 'hello world! 世界这么大,我们一起闯!'
response_params = [
    'HTTP/1.0 200 OK',
    'Date: Sun , 27 may 2018 01 : 01 : 01 GMT',
    'Content-type: text/html; charset=utf-8',
    'Content-Length: {}\r\n'.format(len(body.encode())),
    body,
]
response = '\ r\n'.join(response_params)


def handle_connection(conn, address):
    request = b''
    while EOL1 not in request and EOL2 not in request:
        request += conn.recv(1024)
    print(request)
    conn.send(response.encode())    # response转为bytes后传输
    conn.close()


def main():
    """
    socket.AF_INET: 服务器与服务器间的网络通信
    socket.SOCK_STREAM: TCP的流式socket套接字
    """
    ss = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    ss.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)        # 设置端口可复用
    ss.bind(('127.0.0.1', 8000))
    ss.listen(5)    # 设置 backlog-socket 连接最大排队数量
    print('127.0.0.1:8000')
    try:
        while True:
            conn, address = ss.accept()
            handle_connection(conn, address)
    finally:
        ss.close()


if __name__ == '__main__':
    main()
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值