怎么样去理解 Python 中的装饰器

怎么样去理解 Python 中的装饰器

首先,本垃圾文档工程师又来了。开始日常的水文写作。起因是看到这个问题如何理解Python装饰器?,正好不久前给人讲过这些,本垃圾于是又开始新的一轮辣鸡文章写作行为了。

预备知识

首先要理解装饰器,首先要先理解在 Python 中很重要的一个概念就是:“函数是 First Class Member” 。这句话再翻译一下,函数是一种特殊类型的变量,可以和其余变量一样,作为参数传递给函数,也可以作为返回值返回。

Read more

Sanic 的若干吐槽

Sanic 的若干吐槽

刚刚和红姐,在 哪些 Python 库让你相见恨晚? 这个答案下面讨论了一下 Sanic 的优劣。

突然想起,我司算是国内应该比较少见的把 Sanic 用在正式生产线上的公司了,作为一个主力推(da)动(shui)者(bi),我这个辣鸡文档工程师觉得有必要来说一下我们在使用 Sanic 过程中所采用的一系列深坑。

Read more

日常辣鸡水文:一个关于 Sanic 的小问题的思考

日常辣鸡水文:一个关于 Sanic 的小问题的思考

睡不着,作为一个 API 复制粘贴工程师来日常辣鸡水文一篇

正文

最近迁移组内代码到 Sanic ,遇到一个很有意思的情况

首先标准的套路应该是这样的

Read more

日常辣鸡水文:关于 logging 的进程安全问题

日常辣鸡水文:关于 logging 的进程安全问题

团队聚餐喝了点酒,作为一个垃圾文档工程师来写一篇日常水文

正文

现在团队的日志搜集方式从原本的 TCP 直传 logstash 的方式改进为写入一个单文件后,改用 FileBeat 来作为日志搜集的前端。但是这样时常带来一个问题,即日志丢失

嗯,我们线上服务是 Gunicorn 启用多个 Worker 来处理的。这就有个问题了,我们都知道,logging 模块是 Thread Safe 的,在标准的 Log Handler 内部加了一系列锁来确保线程安全,但是 logging 直写文件是不是进程安全的呢?

Read more

Flask 中的 Context 初探

Flask 中的 Context 初探

大家新年好!鉴于今年春晚非常好看,我觉得承受不起,于是来写点辣鸡水文娱乐下大家,这也是之前立的若干 Flag 中的一个

正文

做过 Flask 开发的朋友都知道 Flask 中存在着两个概念,一个叫 App Context , 一个叫 Request Context 。 这两个算是 Flask 中很独特的一种机制。

从一个 Flask App 读入配置并启动开始,就进入了 App Context,在其中我们可以访问配置文件、打开资源文件、通过路由规则反向构造 URL。当 WSGI Middleware 调用 Flask App 的时候开始,就进入了 Request Context 。我们可以获取到其中的 HTTP HEADER 等操作,同时也可以进行 SESSION 等操作。

不过作为辣鸡选手而言,经常分不清为什么会存在这两个 Context ,没事,我们慢慢来说一说。

Read more

你所不知道的 Flask Part1:Route 初探

前言

我自己都记不清楚上一次写博客是什么时候了(笑),上一次挖的坑现在还没填完,干脆,开个新坑吧,你不知道的 Flask ,记录下自己用 Flask 过程中一些很好玩的东西,当然很大可能我又会中途弃坑

开篇

引子

之前遇到一个很奇怪的需求,需要在flask中支持正则表达式比如,@app.route('/api/(.*?)') 这样,在视图函数被调用的时候,能传入 URL 中正则匹配的值。不过 Flask 路由中默认不支持这样的方法,那么我们该怎么办?我们先思考五分钟吧?

好了,我先给出解决方案吧

1
2
3
4
5
6
7
8
9
10
from flask import Flask
from werkzeug.routing import BaseConverter
class RegexConverter(BaseConverter):
def __init__(self, map, *args):
self.map = map
self.regex = args[0]


app = Flask(__name__)
app.url_map.converters['regex'] = RegexConverter
Read more

用 Python 实现一个最简单的对象模型

一个简单的对象模型

Carl Friedrich Bolz 是一位在伦敦国王大学任职的研究员,他沉迷于动态语言的实现及优化等领域而不可自拔。他是 PyPy/RPython 的核心开发者之一,于此同时,他也在为 Prolog, Racket, Smalltalk, PHP 和 Ruby 等语言贡献代码。这是他的 Twitter @cfbolz

Read more

详解模板引擎工作机制

我已经使用各种模版引擎很久了,现在终于有时间研究一下模版引擎到底是如何工作的了。

简介

简单的说,模版引擎是一种可以用来完成涉及大量文本数据的编程任务的工具。一般而言,我们经常在一个 web 应用中利用模板引擎来生成 HTML 。在 Python 中,当你想使用模板引擎的时候,你会发现你有不少的选择,比如jinja 或者是mako。从现在开始,我们将利用 tornado 中的模板引擎来讲解模板引擎的工作原理,在 tornado 中,自带的模板引擎相对的简单,能方便我们去深入的剖析其原理。

Read more

菜鸟阅读 Flask 源码系列(1):Flask的router初探

前言

没有一个完整的开源项目的的阅读经验的程序猿是一个不合格的程序猿,虽然曾经阅读过部分诸如 Redis 等项目的源码,但是还没有过一个完整的开源项目的阅读经验,因此在经过某个前辈的不断安利后,我决定用 Flask 来作为阅读开源源码计划的开始。而这一个系列的文章,将作为我自己的阅读笔记,来巩固自己曾经所没有重视的 Python 的很多细节。

Read more