后端开发
一人在山旁
这个作者很懒,什么都没留下…
展开
-
一个简单的静态web服务器
用python的socket写的一个简单多进程服务器 #-*-coding:utf-8-*- import re from socket import * from multiprocessing import Process #设置静态文件根目录 HTTP_ROOT_DIR = "./html" def fun(cli_socket): #接收数据 request_dat...原创 2019-03-07 20:44:17 · 383 阅读 · 0 评论 -
一个简单的动态web服务器
这个动态web服务器的思路是在静态服务器的基础上添加对URL的判断,如果URL中带有脚本信息,那么服务器会去执行脚本而不是直接返回静态界面 #-*-coding:utf-8-*- import sys import re from socket import * from multiprocessing import Process #设置静态文件根目录 HTTP_ROOT_DIR...原创 2019-03-13 14:53:47 · 834 阅读 · 0 评论 -
gevent版TCP服务器
gevent版-TCP服务器 import sys import time import gevent from gevent import socket,monkey # 猴子补丁,在执行时动态替换 monkey.patch_all() def handle_request(conn): while True: data = conn.recv(1024) ...原创 2019-03-13 14:44:13 · 330 阅读 · 0 评论 -
协程
协程 协程,又称微线程,纤程。英文名Coroutine。 协程是啥 首先我们得知道协程是啥?协程其实可以认为是比线程更小的执行单元。 为啥说他是一个执行单元,因为他自带CPU上下文。这样只要在合适的时机, 我们可以把一个协程 切换到另一个协程。 只要这个过程中保存或恢复 CPU上下文那么程序还是可以运行的。 通俗的理解:在一个线程中的某个函数,可以在任何地方保存当前函数的一些临时变量等信息...原创 2019-03-13 14:38:16 · 85 阅读 · 0 评论 -
单进程服务器-epoll版
epoll版-TCP服务器 1. epoll的优点: 没有最大并发连接的限制,能打开的FD(指的是文件描述符,通俗的理解就是套接字对应的数字编号)的上限远大于1024 效率提升,不是轮询的方式,不会随着FD数目的增加效率下降。只有活跃可用的FD才会调用callback函数;即epoll最大的优点就在于它只管你“活跃”的连接,而跟连接总数无关,因此在实际的网络环境中,epoll的效率就会远远高...原创 2019-03-13 14:17:07 · 98 阅读 · 0 评论 -
单进程服务器-select版
select版-TCP服务器 1. select 原理 在多路复用的模型中,比较常用的有select模型和epoll模型。这两个都是系统接口,由操作系统提供。当然,Python的select模块进行了更高级的封装。 网络通信被Unix系统抽象为文件的读写,通常是一个设备,由设备驱动程序提供,驱动可以知道自身的数据是否可用。支持阻塞操作的设备驱动通常会实现一组自身的等待队列,如读/写等待队列用...原创 2019-03-13 14:15:01 · 126 阅读 · 0 评论 -
并发服务器模型——多线程服务器
多线程服务器 #coding=utf-8 from socket import * from threading import Thread from time import sleep # 处理客户端的请求并执行事情 def dealWithClient(newSocket,destAddr): while True: recvData = newSocket.r...原创 2019-03-13 14:04:35 · 252 阅读 · 0 评论 -
并发服务器模型——多进程服务器
多进程服务器 1. 多进程服务器 from socket import * from multiprocessing import * from time import sleep # 处理客户端的请求并为其服务 def dealWithClient(newSocket,destAddr): while True: recvData = newSocket.rec...原创 2019-03-13 14:03:27 · 120 阅读 · 0 评论 -
并发服务器模型——单进程服务器
单进程服务器 1. 完成一个简单的TCP服务器 from socket import * serSocket = socket(AF_INET, SOCK_STREAM) # 重复使用绑定的信息 serSocket.setsockopt(SOL_SOCKET, SO_REUSEADDR , 1) localAddr = ('', 7788) serSocket.bind(local...原创 2019-03-13 14:02:24 · 182 阅读 · 0 评论 -
动态服务器以及WSGI
服务器动态资源请求 1. 浏览器请求动态页面过程 2.WSGI 怎么在你刚建立的Web服务器上运行一个Django应用和Flask应用,如何不做任何改变而适应不同的web架构呢? 在以前,选择Python web 架构会受制于可用的web服务器,反之亦然。如果架构和服务器可以协同工作,那就好了: 但有可能面对(或者曾有过)下面的问题,当要把一个服务器和一个架构结合起来...原创 2019-03-13 15:49:02 · 136 阅读 · 0 评论