Python库源码学习1:Flask之app.run】的更多相关文章

先列出app.run()实现的功能,我们以debug=True的情况下进行分析. 1. web服务器,处理http请求 2. 当代码修改后,重启服务器 那么app.run()是如何实现这两个功能的呢? 功能一:http服务器的实现,工作原理: 1. 创建socket,绑定ip和port,监听 2. 当收到请求后,处理请求.请求的处理可以有多种实现方式,比如多进程,多线程,异步等 功能二:代码修改后,重启服务器,实现原理: 需用有一个进程或线程监控代码,如果发现代码修改了,那重启服务器…
今天准备看看Flask框架,找到一套博客系统源码,拿来学习学习 https://github.com/xpleaf/Blog_mini 演示地址 http://140.143.205.19 技术框架 后台语言:Python Web框架:Python Flask 设计模式:工厂模式(程序结构清晰) 前端框架:Bootstrap3 数据库:sqlite或MySQL 数据库设计:一对一/一对多/多对多/高级多对多(高级自引用) 包引用报错 编译器报错如下 [pylint] E0611:No name…
今天开始学习陈硕先生的muduo网络库,moduo网络库得到很多好评,陈硕先生自己也说核心代码不超过5000行,所以我觉得有必要拿过来好好学习下,学习的时候在源码上面添加一些自己的注释,方便日后理解,首先看看UTC时间戳,源码目录为base文件夹: Timestamp.h //UTC时间戳 //类声明文件 #ifndef MUDUO_BASE_TIMESTAMP_H #define MUDUO_BASE_TIMESTAMP_H #include <muduo/base/copyable.h>…
muduo库里面的线程池是固定线程池,即创建的线程池里面的线程个数是一定的,不是动态的.线程池里面一般要包含线程队列还有任务队列,外部程序将任务存放到线程池的任务队列中,线程池中的线程队列执行任务,也是一种生产者和消费者模型.muduo库中的线程池源码如下: 线程池头文件ThreadPool.h //线程池 // Use of this source code is governed by a BSD-style license // that can be found in the Licen…
muduo库里面的线程类是使用基于对象的编程思想,源码目录为muduo/base,如下所示: 线程类头文件: // Use of this source code is governed by a BSD-style license // that can be found in the License file. // // Author: Shuo Chen (chenshuo at chenshuo dot com) //线程类 #ifndef MUDUO_BASE_THREAD_H #d…
SimpleHTTPServer.SimpleHTTPRequestHandler继承了BaseHTTPServer.BaseHTTPRequestHandler. 源码中主要实现了BaseHTTPServer.BaseHTTPRequestHandler处理时需要调用的do_Head()和do_GET()函数.这类函数主要是在BaseHTTPRequestHandler在接受请求并判断请求头中的command之后调用的. def handle_one_request(self): ... ..…
muduo源码的互斥锁源码位于muduo/base,Mutex.h,进行了两个类的封装,在实际的使用中更常使用MutexLockGuard类,因为该类可以在析构函数中自动解锁,避免了某些情况忘记解锁.代码如下所示: // Use of this source code is governed by a BSD-style license // that can be found in the License file. // // Author: Shuo Chen (chenshuo at c…
前言     NioEventLoop的run方法,是netty中最核心的方法,没有之一.在该方法中,完成了对已注册的channel上来自底层操作系统的socket事件的处理(在服务端时事件包括客户端的连接事件和读写事件,在客户端时是读写事件).单线程任务队列的处理(服务端的注册事件.客户端的connect事件等),当然还包括对NIO空轮询的规避.消息的编解码等.下面一起来探究一番,首先奉上run方法的源码: protected void run() { for (;;) { try { try…
muduo库线程特定数据源码文件为ThreadLocal.h //线程本地存储 // Use of this source code is governed by a BSD-style license // that can be found in the License file. // // Author: Shuo Chen (chenshuo at chenshuo dot com) #ifndef MUDUO_BASE_THREADLOCAL_H #define MUDUO_BASE…
muduo库里面的实现日志滚动有两种条件,一种是日志文件大小达到预设值,另一种是时间到达超过当天.滚动日志类的文件是LogFile.cc ,LogFile.h 代码如下: LogFile.cc #include <muduo/base/LogFile.h> #include <muduo/base/Logging.h> // strerror_tl #include <muduo/base/ProcessInfo.h> #include <assert.h>…