Jonliu Blog

Stay Conceited,Stay complacent.

项目升级Django版本

项目升级Django版本 一、准备工作 在最新dev下切出feature分支 项目Dokcerfile 项目Pipfile/requirements.txt 二、更新依赖 进入容器: make bash 安装pipenv: pip install --user pipenv 创建并进入虚拟环境: pipenv shell 更改Pipfile/requir...

Poetry调研与使用

Poetry调研 一、对比   Poetry Pipenv 对比版本 1.0.2 2018-11-26 依赖文件名 pyproject.toml, poetry.lock Pipfile, Pipefile.lo...

Celery实践的一些心得

前言 最近,公司项目使用Celery做异步任务踩了一些坑,后来阅读源码总结了一下经验。 一、理解task与request 通常我们会在celery注册实现的异步任务或定时任务task, 在celery worker运行时注册的task将会有一个全局化的实例。而每次调用某个task任务,实际上只是从broker获取到message创建一个新的worker.request.Request对象,...

golang常用组件库

golang常用库及组件 Log: logrus, zap(比logrus性能强, uber-go维护) Redis: redis (支持cluster) Config: viper, toml Yaml: yaml Testing: goconvey Orm: gorm Web framework: gin, beego, echo Request: grequests...

布隆过滤器理解及实现

优缺点 优点: 空间效率和查询时间都远远超过一般的算法 缺点: 缺点是有一定的误识别率和删除困难。 应用场景 1.去重 2.避免缓存穿透 实现原理 BloomFiler又叫布隆过滤器,基本思想: 当一个元素被加入集合时,通过K个散列函数将这个元素映射成一个位数组中的K个点,把它们置为...

Kafka要点总结

Kafka介绍 优点: 高吞吐: 单机10w+/s,高于其他消息中间件。 高容错:多副本(Replica),允许单机宕机而不丢失数据。 高性能:顺序写、零拷贝、分片等特性。 高并发: Broker使用优化的reactor网络线程模型。 应用场景: 需要异步、削峰、解耦等场景。 大数据、实时计算、日志分析等高吞吐量要求的场景。(但RabbitMQ消息延时更低) ...

Python标准库logging

0.logging库的结构 1.线程锁 logging模块可能被用于多线程中,模块中有许多全局变量,如果不加锁也会导致并发访问数据的安全问题。logging源码中表明:在使用多线程模块threading时,提供多线程重入锁的获取和释放方法_acquireLock, _releaseLock: try: import threading except ImportError: #p...

RabbitMQ踩坑总结

RabbitMQ的持久化 1.设置Exchange 2.MessageQueue的durable属性为true,可以使队列和Exchange持久化 3.生产者在发送消息的时候,将delivery_mode设置为2(persistent) RabbitMQ的事务机制 在许多场景下,你不能丢失消息,包括producer发布到R...

Python requests库的stream属性

Requsts stream属性介绍 官方文档描述如下: iter_content(chunk_size=1, decode_unicode=False)[source] Iterates over the response data. When stream=True is set on the request, this avoids reading the content a...

由tornado引发的一些思考

“Yeah It’s cool. ” 前言 最近接触到公司的长轮训项目,用于实现好友列表页消息实时更新,看到组里的小伙伴是用tornado写的项目,所以进行一些研究。 关于epoll epoll是Linux内核为处理大批量文件描述符而作了改进的poll,是Linux下多路复用IO接口select/poll的增强版本: 它能显著提高程序在大量并发连接中只有少量...