前言 最近公司要求基于公司的hadoop平台做一个关于电信移动网络的数据分析平台,整个项目需求大体分为四大功能模块:数据挖掘分析.报表数据查询.GIS地理化展示.任务监控管理.由于页面功能较复杂,所以采用前后端分离方式开发.前端采用webpack+vue+vue-router+axios技术栈,后端用django进行开发.从搭建到上线,整个项目前前后后花了差不多一个月时间,中途也遇到一些问题,不过还好都解决了.由于是个人项目,所以我打算把源码贡献出来大家一起讨论学习. 源代码 后端:https:…
本项目实现了任务执行的实时进度查询 实现方式 前端websocket + 后端websocket + 后端redis订阅/发布 实现原理 任务执行后,假设用变量num标记任务执行的进度,然后将num发布为订阅的消息保存到redis队列,比如 redis_helper.public('当前任务进度为 %s' %num),django的websocket视图在特定频道订阅消息num并利用websocket协议将消息实时推送到前端,完成前端实时进度展示. 实现代码 redis订阅/发布: class…
前面已经将项目环境搭建好了,下面进入实战环节.这里挑选项目中涉及到的几个重要的功能模块进行讲解. celery执行异步任务和任务管理 Celery 是一个专注于实时处理和任务调度的分布式任务队列.由于本项目进行数据分析的耗时比较长,所以采用异步方式执行任务.本项目中Broker使用redis,Result Backend使用django的数据库,部分配置如下settings.py(具体配置见项目代码): import djcelery djcelery.setup_loader() BROKER…
在开始项目之前,假设你已了解以下知识:webpack配置.vue.js.django.这里不会教你webpack的基本配置.热更新是什么,也不会告诉你如何开始一个django项目,有需求的请百度,相关的文章已经很多了. 下面开始一步一步构建完整的项目: 1.开发环境准备 win7 x64 python 3.4 Django 1.10.8 node.js 4.4.3 2.python相关包安装 建议创建python虚拟环境进行安装. pip install virtualenvpip instal…
项目需求 本项目从impala获取到的数据为用户地理位置数据,每小时的数据量大概在8000万条,数据格式如下: 公司要求对这些用户按照聚集程度进行划分,将300米范围内用户数大于200的用户划分为一个簇,并计算这个簇的中心点和簇的边界点. 附模拟的数据:https://files.cnblogs.com/files/dotafeiying/test.zip 实现原理 下面我们来一步一步实现上述需求: 1.将用户按照聚集程度进行划分 我们可以选择基于密度的聚类算法DBscan算法,DBSCAN算法…
项目中有一处功能需求是:需要在历史数据查询页面进行查询字段的选择,然后由后台数据库动态生成对应的excel表格并下载到本地. 如果文件较小,解决办法是先将要传送的内容全生成在内存中,然后再一次性传入Response对象中: 如果文件较大时,我们可以考虑向HttpResponse传递一个迭代器,流式的向客户端传递数据. view.py视图 @csrf_exempt def exportData(request): format = request.GET.get('format') pk = re…
vue+drf的前后端分离部署笔记 前端部署过程 端口划分: vue+nginx的端口 是81 vue向后台发请求,首先发给的是代理服务器,这里模拟是nginx的 9000 drf后台运行在 9005端口上 1.获取前端代码 wget https://files.cnblogs.com/files/pyyu/07-luffy_project_01.zip 2.解压缩,准备编译前端代码 unzip 07-luffy_project_01.zip 3.下node源码,配置nodejs编译环境 wge…
第一阶段: 1.版本控制器:Git      2.pip安装源换国内源    3.虚拟环境搭建        4.后台:Django项目创建 5.数据库配置              6.luffy前端搭建Vue         7.前后台站点配置    8.前端主页 9.后端home应用的创建    10.分离的前后台交互.跨域问题解决 第二阶段: 1.Git线上操作         2.分离的前后台交互-前后端跨域处理           3.静态接口配置 4.home数据库设计    5.…
Vue+Django前后端分离项目部署,nginx默认端口80,数据提交监听端口9000,反向代理(uwsgi配置)端口9999 1.下载项目文件(统一在/opt/luffyproject目录) (1)前端vue--------------wget https://files.cnblogs.com/files/pyyu/07-luffy_project_01.zip (2)后端django---------wget https://files.cnblogs.com/files/pyyu/lu…
List多个字段标识过滤 class Program{  public static void Main(string[] args) { List<T> list = new List<T>(); list.Add(new T() { orderid = 1, houseid = 1 }); list.Add(new T() { orderid = 1, houseid = 1 }); list.Add(new T() { orderid = 1, houseid = 2 });…