听说我有女朋友
听说我有女朋友我很喜欢写听说系列文章,从入行开始写的第一篇《听说你会 Python》。所以半年了,我干脆也来写一篇《听说你有女朋友》。为啥要今天写?因为明天她送的新键盘要到了,正好老键盘退役,写点啥纪念下 怎么认识的?很多人都会问我这样的问题:”你一个技术男咋和学音乐的认识了?“,我一般这么回答:”知乎认识的“(请知乎给我广告费,明天之前打到我支付宝上 好了,正经说,我们的确算是在知乎上认识的(广告费+1)。当时我们在一个知乎群里,然后后面加上了好友。 很多时候,我这个人有个毛病,加了女孩子之后不怎么聊的。不过幸好,我们最开始有个共同的爱好,养猫。她家的是一只橘猫。我家是母女两。某种意义上讲,这三只猫是我们俩的媒人(回去加罐头) 正式开始聊起来,应该是开学的时候,她当时睡眠不太好。某天晚上,睡前戏称保佑她肯定睡得好之后。第二天她说昨晚居然还真睡得不错(直男如我我现在都不知道我的功力是不是有那么强。问她她也不说,摔) 借着这个契机,就开始聊了起来,包括不限于互相点外卖犒劳对方上课/上班的无奈。出来约了两次火锅(直男撩妹法) 11月初,当时做完18年的...
去 async/await 之路
去 async/await 之路看到彭总写的文章这破 Python,感慨颇多,我也来灌水吧。 首先,我司算是在国内比较敢于尝试新东西的公司吧,最直接的提现就在于我们会及时跟进社区相关基础服务的迭代,并且敢于去尝试新的东西。嗯,从去年6月到现在,我司在线上推行了很长一段时间的 async/await ,并且引入新的注入 Sanic 这样全新的框架,但是不得不说,我们现在要对 async/await 暂时的说再见了。 我们为什么选用 async/await ?和我们组具体场景有关,我们组有相当一部分场景,是根据不同的 URL 去不同的子服务请求数据,组合之后,再进行下一步的统一处理。那么这个时候,传统的同步的方式在数据源越来越杂的情况下就显得很无奈。 我们当时有这样几个选择: 维护进程/线程池,利用通用的进程/线程来处理请求 利用 Gevent 这样第三方的 coroutine+EventLoop 方案 使用 async/await + asyncio 这一套 首先,1被我们排除了,原因很简单,太重了。2最开始也被我们暂时性的排除,当时我们对于 monkey-patch...
她曾以为自己能逃开教授的手丨人间
她曾以为自己能逃开教授的手丨人间 《不能说的夏天》剧照 ...
外国语学院-情况说明
...
怎么样去理解 Python 中的装饰器
怎么样去理解 Python 中的装饰器首先,本垃圾文档工程师又来了。开始日常的水文写作。起因是看到这个问题如何理解Python装饰器?,正好不久前给人讲过这些,本垃圾于是又开始新的一轮辣鸡文章写作行为了。 预备知识首先要理解装饰器,首先要先理解在 Python 中很重要的一个概念就是:“函数是 First Class Member” 。这句话再翻译一下,函数是一种特殊类型的变量,可以和其余变量一样,作为参数传递给函数,也可以作为返回值返回。 12345678def abc(): print("abc")def abc1(func): func()abc1(abc) 这段代码的输出就是我们在函数 abc 中输出的 abc 字符串。过程很简单,我们将函数 abc 作为一个参数传递给 abc1 ,然后,在 abc1 中调用传入的函数 再来看一段代码 1234567def abc1(): def abc(): print("abc") return...
Sanic 的若干吐槽
Sanic 的若干吐槽刚刚和红姐,在 哪些 Python 库让你相见恨晚? 这个答案下面讨论了一下 Sanic 的优劣。 突然想起,我司算是国内应该比较少见的把 Sanic 用在正式生产线上的公司了,作为一个主力推(da)动(shui)者(bi),我这个辣鸡文档工程师觉得有必要来说一下我们在使用 Sanic 过程中所采用的一系列深坑。 正文首先 Sanic 官方 的口号是一个 Flask Like 的 web framework 。这回让很多人有一种错觉,就是 Sanic 内部的实现和 Flask 近乎一致,但是事实真的是这样么? 我们首先来看一下一组 Hello World 123456789101112# Flaskfrom flask import Flaskapp = Flask(__name__)@app.route('/')def hello_world(): return 'Hello World!'if __name__ == '__main__': ...
日常辣鸡水文:一个关于 Sanic 的小问题的思考
日常辣鸡水文:一个关于 Sanic 的小问题的思考睡不着,作为一个 API 复制粘贴工程师来日常辣鸡水文一篇 正文最近迁移组内代码到 Sanic ,遇到一个很有意思的情况 首先标准的套路应该是这样的 1234567891011121314151617181920212223242526272829303132333435363738394041from sanic import Sanic,reponseapp=Sanic(__name__)def return_value(controller_fun): """ 返回参数的装饰器 :param controller_fun: 控制层函数 :return: """ async def __decorator(*args, **kwargs): ret_value = { "version": server_current_config.version, ...
日常辣鸡水文:关于 logging 的进程安全问题
日常辣鸡水文:关于 logging 的进程安全问题团队聚餐喝了点酒,作为一个垃圾文档工程师来写一篇日常水文 正文现在团队的日志搜集方式从原本的 TCP 直传 logstash 的方式改进为写入一个单文件后,改用 FileBeat 来作为日志搜集的前端。但是这样时常带来一个问题,即日志丢失 嗯,我们线上服务是 Gunicorn 启用多个 Worker 来处理的。这就有个问题了,我们都知道,logging 模块是 Thread Safe 的,在标准的 Log Handler 内部加了一系列锁来确保线程安全,但是 logging 直写文件是不是进程安全的呢? 分析我们写文件的方式是用的是 logging 模块中自带的 FileHandler ,首先看看它源码吧 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667class FileHandler(StreamHandler): ...