前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >无痛使用 Django+xAdmin+MongoDB

无痛使用 Django+xAdmin+MongoDB

作者头像
the5fire
发布2019-03-01 11:10:08
2K0
发布2019-03-01 11:10:08
举报

前几天开始自己在做些日志的分析的小玩具,要分析手搜的用户访问情况,工具很简单,处理逻辑也很简单——从kafka拿nginx日志,然后处理完保存的数据库中,然后以易读的方式展现。

唯一的难点就是数据量比较大,实现依然使用熟悉的Django+xadmin,这个可以省去页面的开发时间,我只需要写脚本,转化数据就ok。前两天弄完跑了一下,结果比想象的差,虽然只是单线程的方式来消费kafka的数据,但是也确实太慢了。跑了一天才处理完50w日志。并且Django+MySql也有一个问题,数据量太大的话列表页加载就会比较慢。

一开始做之前有考虑用mongodb或者redis来写数据,但是还是考虑到实现成本(主要是懒),直接用最熟悉的。demo做完觉得不错,现在可以考虑写入速度的问题了。于是想到MongoEngine以及它对Django的支持,开始折腾,折腾良久发现确实不妥,定义好的Model要改,xadmin也不能用了,最后终于发现这个东西,那感觉跟当初用上xadmin一样一样滴。

就是这个东西:http://django-nonrel.org/

代码语言:javascript
复制
Making Django run on non-relational databases

简直不能再好,无痛迁移,最重要的是xadmin依然能用。有兴趣的可以去看看。

说到下午这通折腾,当时用了MongoEngine出品的Django-Mongoengine,说是支持admin,尝试下吧,发现有点坑,尤其是关于admin.site.registe的部分。另外还有一个就是PyDanny出品的一个django-mongonaut,这哥们就是之前做Django-Admin2的那个大牛。关于admin2的事可以看这个:http://www.the5fire.com/django-admin2-died-and-django-xadmin-continue.html. 不过说实话,这个mongonaut感觉也不好用。不过这哥们的那本关于Django的书还是挺好的。

一下午一通折腾,一通的看源码,发现这俩(mongonaut,MongoEngine)都做了太多的定制,model也改,admin也改,form也改。个人感觉,针对于这种典型的MVC结构的框架,尤其是对于Django来说,只需要保证Model层提供的接口就ok了。不是有句话吗,叫:不管是不是鸭子,只有能嘎嘎叫,那就是鸭子。对于这个理论上也是这样的,只要保证了model层返回的对象所具有上层的行为就ok,那整个框架就能跑的起来。

不过Django-nonrel的源码我还没看,不清楚实现逻辑是什么。不过思想是不变的,还是得说到MVC,这个最重要的就是上下层解耦,从而通过替换下层Model的实现达到使用不同类型的数据,比如这货。另外,这货是从Django上fork出来的一个项目,单独切出分支来做的开发。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2016-02-04 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档