python web

77 阅读1分钟

通过socket实现web请求

import socket


def main():
    server = socket.socket()
    server.bind((("127.0.0.1", 8080)))
    server.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, True)
    server.listen(5)

    while True:
        conn, (ip, port) = server.accept()
        data = conn.recv(1024)

        # 转字符串
        req = data.decode("utf-8")

        data = req.split(" ")
        method = data[0]
        path = data[1]
        conn.send(b"HTTP/1.1 OK\r\n\r\n")
        if path == "/":
            conn.send(b"hello world")
        elif path == "/index":
            conn.send(b'This is a index html')
        else:
            conn.send(b"not found")
        conn.close()


if __name__ == '__main__':
    main()

WSGI

from wsgiref.simple_server import make_server


def run(env, response):
    # for i in env.values():
    #     print(i)
    #     print()
    path = env.get("PATH_INFO")
    response("200 ok", [])
    if path == "/":
        return [b"main page"]
    elif path == "/index":
        return [b"index page"]
    else:
        return [b"404 page not found"]


if __name__ == '__main__':
    server = make_server("127.0.0.1", 8080, run)
    server.serve_forever()

web框架

  • Django 大而全,重量级框架
  • Flask 小而精,自身功能较小,第三方模块多
  • Tornado 异步非阻塞