• 等级
  • 1077391 访问
  • 137 原创
  • 0 转发
  • 2930 排名
  • 139 评论
  • 1224 获赞

怎样写一个任务队列

之前在用celery的时候,遇到了worker卡住的bug,于是认真的看了相关文档和代码,了解celery实现的原理。其实核心原理非常简单:1.发送任务到队列2.守护程序worker死循环不断从队列取任务并执行至于怎么包装传递这个任务,实现思路类似函数传参,有传值、传引用。

2018-01-01 12:58:09

记一次Django代码性能优化及Pycharm Profile使用

是一段导出数据月报的脚本,原先需要十几秒,优化后只需要1秒多。优化第一步就是Profile,先看看慢在哪里。Pycharm自带Profile工具,很方便。拿一张官方图说明一下。图表说明:给出了函数调用关系。红色->黄绿色->绿色,颜色越深说明耗时越多。右上角的“x数字”代表函数调用次数。Own代表该函数本身的耗时,不包括调用子函数;而Total包括调用子函数;

2018-01-01 10:18:35

Paw —— 比Postman更舒服的API利器

特点:颜值高本地应用,流畅有收藏夹,管理请求可使用环境变量。比如用来一键切换开发环境请求和线上环境请求。即不同环境的同个接口只有host不一样,其它都是一样的,所以就把host抽离出来弄成一个环境变量。丰富的Auth.支持BasicAuth/OAuth1/OAuth2/S3signature/自定义等。支持dynamicvalue。比如当前时间戳、随机数、UUID

2017-12-31 20:11:01

根据自身经历诠释《调试九法》

9条基本调试规则

2017-12-31 16:26:55

《人月神话》笔记

人月神话(TheMythicalMan-Month)无论多少个母亲,孕育一个生命都需要十个月。

2017-12-31 00:24:39

计算2个时间段的重叠天数

最近做一个需求,是计算查询日期范围内产生的费用,需要将查询日期范围跟实际产生费用日期范围计算重叠天数,然后重叠天数*每天费用=查询日期范围内的费用。一个时间段跟另一个时间段,有如下三种情况:1.没有重叠2.部分重叠3.包含式重叠。即一个时间段被另一个时间段包含。

2017-12-30 14:19:39

利用Redis实现分布式锁

最简单的思路,就是利用到redis的key,这个key的名字可以叫xx_lock。key已存在->锁被占用创建key->获取锁删除key->释放锁在需要同步的代码里加锁,先去判断有没有这个key,如果有这个key,说明拿不到锁,如果没有,则创建key,表示拿到了锁。在执行完需要同步的代码后,将key删掉释放锁。

2017-12-30 10:32:33

【python爬虫】使用Selenium+PhantomJS抓取动态页面

需求有些网站反爬虫,会在js里面动态操作DOM渲染页面,执行js后的页面才是最终页面。而我们在python中直接用requests.get()获取到的页面,是没执行js的页面,没有我们想要的信息。解决方法是Selenium+PhantomJS.

2017-12-30 00:05:23

一种分布式id生成规则

需求有个生成订单号的需求,对于生成订单号有如下要求不能被猜出订单量唯一性趋势递增订单号包含时间信息防止racecondition生成重复的id防止时间回拨生成重复的id满足每秒可以生成1w个订单号订单号不能过长

2017-12-27 00:32:42

Pycharm调试器综述

说白了,调试器比print的好处在于,调试器可以用丰富的姿势来跟踪代码,暗中观察,且不污染代码

2017-12-17 13:52:48

Django2.0源码剖析——urls

问题:当我们拿到一个路径的时候,是怎么找到对应的view函数的为什么可以include其它的urls为什么urls.py里面需要一个叫urlpatterns的列表,并且里面是一个个的path()或re_path()函数调用路径pattern开头要不要写反斜杠/,结尾要不要写反斜杠/路径pattern里要不要写^和$为什么包含admin.site.urls不需要include

2017-12-16 16:32:17

爬虫综述

什么是爬虫一句话:get网页就是爬虫。基本流程几个环节:Get->Extract->Store

2017-12-09 10:11:25

Django的国际化

如果是浏览器的话,一般浏览器设置什么语言,发请求的时候,Accept-Language会自动设置成什么语言。所以如果看到settings.py设置LANGUAGE_CODE='en-us',而浏览器访问的时候却显示中文,不要惊讶,是因为Accept-Language优先级高。

2017-12-08 22:38:08

python的国际化gettext模块

国际化与本地化国际化(internationalization).简称i18n(18指在”internationalization”这个单词中,i和n之间有18个字母).本地化(localization).简称L10n(10指在”localization”这个单词中,l和n之间有10个字母).

2017-12-08 00:14:38

高效使用Pycharm不完全指南

用Pycharm提高生产力。

2017-12-02 18:02:34

使用cURL作为HTTP请求媒介

甲:“这个接口有问题”乙:“你把你请求发我呢,我试试看”甲:“这是个POST请求,咋发给你”乙:“用cURL格式字符串”

2017-12-02 10:45:32

使用Django-environ来区分不同环境

就是一个读取环境变量的东西就2个类:Env/Path.简洁清晰。

2017-12-01 00:19:07

给Django日志加上request_id

用来标识同一个请求的日志,方便检索和分析。request_id用uuid自动生成。如果请求头有X-Request-ID,就用请求头的,这样一个请求涉及多个服务调用的时候可以把request_id带过去,标识为同一个请求的request_id.

2017-11-29 09:07:17

记一次请求Django接口时URL结尾少了斜杠的问题

事情是这样的。移动端的同事在调用Django接口时,明明已经有登录态,却返回未登录。于是app以为是token过期,刷新token再请求,再提示未登录,如此反复,造成了死循环。查看日志,发现是URL后面少了斜杠,由于Django中设置了APPEND_SLASH=True,当URL后面缺少斜杠时,会自动拼上斜杠,并重定向。那为什么重定向之后,登录态就丢失了呢?

2017-11-27 23:25:21

记一次Django级联删除引发的故障

事情是这样的,运营那边有2个员工离职了,让后台这边删除掉他们的账号。同事很利索的在Djangoshell中进行了这样的操作:>>users=User.objects.filter(username__in=[xxx,xxx])>>users.delete()一会过后,运营反馈说很多数据没了。

2017-11-26 22:52:43

mattkang

搞过游戏开发、web开发,喜欢python、golang,可写前后端
关注
  • 网络游戏/后台开发工程师
  • 中国 北京 朝阳区
奖章
  • 专栏达人
  • 持之以恒