Bryan Blog

个人分享 但愿各位看官喜欢

flask 信号机制实现

Signal in flask

背景 flask 从 0.6 开始支持信号机制,具体的功能实现是依赖 blinker , 通过使用 blinker,在 flask 内实现了一个简单的观察者模式。在 flask 中,可以对 flask 内的一些 内置的信号 可以监察,注册相关的处理方法,在信号发出时触发。使用起来十分方便,这篇文章就来具体探索一下 blinker 的信号实现机制 信号使用 在 blinker 中,信号机...

深入了解 gevent

Dive into gevent

背景介绍 在 python 的 web 部署中,经常会使用 gunicorn 启动 web 服务,同时,为了并发效率更高,一般会使用 -w 指定多个工作进程 (worker processes) , 同时可以通过 -k 指定工作进程的类型,目前支持的工作进程的类型包括: sync, eventlet, gevent, tornado, gthread。具体选择工作进程类型可以参考此博客 。...

Celery 3.x 升级至 celery 4.x

Celery 3.x upgrade to celery 4.x

背景介绍 定期升级项目依赖包是个好习惯,依赖包由于将近一年多没有升级了,最近集中整理进行了升级。大部分的升级都比较顺滑,但是 celery 的升级就真的是磕磕绊绊了。按照处理是顺序记录一下,为后来人节省更多时间。 首先介绍下项目中 celery 相关的依赖包,目前项目中主要使用的是 celery 进行异步处理,使用 celery-redbeat 设置定时异步任务,使用 flower 进行...

从 Flask-script 迁移到 Click

Migrating from flask-script to click

基础介绍 Flask-script 是一个适用于 Flask 框架的拓展,可以帮助更方便地写脚本,方便线上执行一些临时的代码。使用的流程如下所示: 首先你需要在 Flask 项目下新建一个manage.py 的脚本文件,此后增加临时执行的方法,比如下面增加一个hello 方法 # manage.py from flask import Flask from flask_script ...

代码整洁之道

Clean code

基础介绍 程序员荐书的榜单上,屡屡看到《代码整洁之道》 ,处于程序员自我修养的需要,买来拜读一下,按照原书的章节,整理相关内容如下。 全书梗概 有意义的命名 代码中命名必须名副其实,保证命名不需要额外的注释来解释; 避免误导性的命名,比如与特定名词相同的命名,以及不同之处较小的命名; 命名应该是有意义,避免无意义的废号,比如 a, the, variable 等无意义的...

程序员的软技能

Soft skills

基础介绍 偶然看到一个荐书的榜单,提到2018的年度书籍,推荐了《软技能,代码之外的生存指南》 ,刚好有空,通读一遍,确实不错。虽然部分内容有鸡汤之嫌,干货还是蛮多的。有些想法真的是相见恨晚。按照原书的结构梳理记录。 全书梗概 全书以程序员的视角介绍了与程序员的生活相关的几块内容,主要包括职业,自我营销,学习,生产力,理财,健身,精神。有些部分看起来和程序员关系没有那么大,但是确实都是...

PEP8 规范

PEP 8

基础 本篇文章大致是对PEP 8 的翻译,部分内容没有严格按照逐句的翻译方式。希望能写出更加Pythonic的代码 代码布局 缩进 每个缩进层次为4个空格 连续行包装的元素的两种方案: 隐式续行 (implicit line),垂直对齐与圆括号,方括号或花括号 悬挂缩进(hanging indent),首行没有参数,后续行应该多缩进一级以便和正常的缩进区分 # 隐式...

Git笔记

dive into git

基础概念 使用过git的都会有一些基础的感觉,git管理的代码会涉及到几个存储区域。具体如下图所示: 其中包含三个不同的的代码存储区域: 工作区,工作区就是可视的代码目录。一般情况下,我们修改了代码就是更改工作区的代码 暂存区,对于需要提交的代码,会通过git add 加入暂存区 代码分支,进行实际提交时,使用git commit 将暂存区中的代码一次性加入代码分支 ...

Mock与模块引入问题

mock and module import

问题描述 在最近的单元测试中,使用Mock模块时发现一个一个奇怪的问题,当使用from module import func 后,如果使用Mock去模拟对应的方法时,执行的依旧是原始方法,而不是模拟的方法。下面使用代码解释一下: 在项目中存在两个python文件,其中一个是action.py 文件,代码为: def my_func(): return 'original fun...

Less与Sass使用

less and sass

基础概念 有前端开发的小伙伴都或多或少接触过Sass和Less,由于CSS功能比较弱,代码的复用性比较弱,为了更方便地编写CSS,程序员们想到可以更方便的文件设计样式,然后再转换为CSS。这种方式就成为CSS预处理。而Less和Sass就是目前最流行的CSS预处理文件。 这两种方式实现的功能类似,都具备如下所示的基础功能增强: 变量,CSS不支持变量,导致相同的数值需要复制粘贴,...