专栏首页Python程序员杂谈无痛使用 Django+xAdmin+MongoDB

无痛使用 Django+xAdmin+MongoDB

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

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

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

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

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出来的一个项目,单独切出分支来做的开发。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Django是否太重了

    接触Django差不多两年了,从一开始转到python就开始用Django做项目,到现在依然是在Django上开发CMS。Django算是个重量级框架吗?我在思...

    the5fire
  • 《Django企业开发实战》FAQ - 持续更新

    单纯的学习 Django 提供的功能的话,看文档就够了,前提是你英文阅读还行,不过很多「残卷」的中文翻译看起来也不太省时间。当然也有人把 Django 文档做了...

    the5fire
  • pypy2.0.2成功运行Django1.5+Mysql

    接上篇文章说, 上篇文章 最后提到,在Django创建针对mysql的connection时,传递了两个参数: charset 和 use_unicode 导致...

    the5fire
  • Python Web 学习资料汇总

    image Test-Driven Development with Python

    马哥Python
  • Django是否太重了

    接触Django差不多两年了,从一开始转到python就开始用Django做项目,到现在依然是在Django上开发CMS。Django算是个重量级框架吗?我在思...

    the5fire
  • 为什么 Django 能持续统治 Python 开发世界

    对于 Python 开发者来说,web 开发框架真可谓玲琅满目。然而 Django , 毋庸置疑的成为最受青睐的 web 框架。通过本篇博客,我来为大家讲解下为...

    Debian社区
  • Python高级进阶(一)Python框架之Django入门

      Django是一个开放源代码的Web应用框架,由Python写成。采用了MVC的框架模式,即模型M,视图V和控制器C。它最初是被开发来用于管理劳伦斯出版集团...

    马一特
  • 10个实用的Django建议

    Django 作为一个杰出的Python开源框架,或许得不到和其它流行框架如Rails这样多的赞美,但是它和其他框架一样精炼,非常注重DRY(Don’t Rep...

    小小科
  • Flask与Django的比较

    Flask确实很“轻”,不愧是Micro Framework,从Django转向Flask的开发者一定会如此感慨,除非二者均为深入使用过 Flask自由、灵活,...

    py3study
  • Python测试开发django1.简介

    Django是一种基于Python开发的开源的高级Web应用框架,使用Django,使你能够以最小的代价构建和维护高质量的Web应用。Djang...

    橙子探索测试

扫码关注云+社区

领取腾讯云代金券