内容简介:由于我们使用了多进程的方式做 spiker,所以就不能直接使用如下方式来入库了只能在通过整个主进程结束之后,通过获取主进程的返回结果来决定是否做入库操作:入库后的格式尽量简单:
由于我们使用了多进程的方式做 spiker,所以就不能直接使用如下方式来入库了
python spiker.py | python xxx | python yyy && python redisToMysql.py 复制代码
只能在通过整个主进程结束之后,通过获取主进程的返回结果来决定是否做入库操作:
python spiker.py | python format.py | python writeToRedis.py if [ "$?" == "0" ]; then python redisToMysql.py fi 复制代码
入库后的格式尽量简单:
mysql> select * from respage02; +-----+------------+------------+-------------+--------------+-------+------+ | id | bikeid | day | lat | lng | time | type | +-----+------------+------------+-------------+--------------+-------+------+ | 1 | 8620750656 | 2018-11-07 | 29.04729065 | 119.64855231 | 14:56 | mb | | 2 | 8620762418 | 2018-11-07 | 29.04842459 | 119.64730693 | 14:56 | mb | | 3 | 8620663052 | 2018-11-07 | 29.08465714 | 119.66206422 | 16:53 | mb | 复制代码
接口化
还是在 respage01 的 django 项目上直接新增接口便可。
新增 URL
urlpatterns = [ url(r'v1/respage01/$', views.Respage01.as_view(), name='Respage01'), url(r'v1/respage02/$', views.Respage02.as_view(), name='Respage02'), ] 复制代码
新增 model
class Respage02Info(models.Model): """ respage 02 相关的数据 """ time = models.CharField(max_length=100) day = models.CharField(max_length=100) bikeid = models.CharField(max_length=200) lat = models.FloatField() lng = models.FloatField() type = models.CharField(max_length=100) class Meta: db_table = "respage02" 复制代码
新增序列化
class Respage02Serializer(serializers.HyperlinkedModelSerializer): """ 序列化Respage02相关的数据 """ class Meta: model = Respage02Info fields = ('time', 'lat', 'lng', 'bikeid', 'type', 'day') 复制代码
新增业务逻辑 (view)
class Respage02(APIView): """ 获取respage02相关的数据 """ authentication_classes = [] permission_classes = [] def get(self, request, format=None): req = request.query_params if 'type' not in req: return Response({}, status=status.HTTP_400_BAD_REQUEST) // 获取某一天内最近时间点的最新数据 if req['type'] == 'now': if 'day' not in req: return Response({}, status=status.HTTP_400_BAD_REQUEST) timelist = Respage02Info.objects.distinct().values("time").filter(day=req['day']).order_by('-time').all() now = timelist[0]['time'] queryset = Respage02Info.objects.filter(day=req['day']).filter(time=now) serializer = Respage02Serializer(queryset, many=True) // 获取某一天内的所有时间点列表 if req['type'] == 'timelist': if 'day' not in req: return Response({}, status=status.HTTP_400_BAD_REQUEST) timelist = Respage02Info.objects.distinct().values("time").filter(day=req['day']).order_by('time').all() return Response(timelist, status=status.HTTP_200_OK) // 获取某一天内某一时间点的单车分布数据 if req['type'] == 'location': if 'day' not in req or 'time' not in req: return Response({}, status=status.HTTP_400_BAD_REQUEST) queryset = Respage02Info.objects.filter(day=req['day']).filter(time=req['time']) serializer = Respage02Serializer(queryset, many=True) return Response(serializer.data, status=status.HTTP_200_OK) 复制代码
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- NutzBoot v2.4.0.v20200427“单车”
- 青桔单车 chameleon 跨平台实践分享
- 摩拜 & 京东联合利用智能单车数据挖掘违章停车
- 搏一搏,单车变摩托,记录一下我的淘宝实习面试
- 摩拜单车类的共享行业应如何在不可靠远程网络下进行分布式 MQTT 设计
- 接口测试及常用接口测试工具
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Android编程权威指南(第3版)
比尔·菲利普斯 (Bill Phillips)、克里斯·斯图尔特 (Chris Stewart)、克莉丝汀·马西卡诺 (Kristin Marsicano) / 王明发 / 人民邮电出版社 / 2017-6 / 129.00元
Big Nerd Ranch 是美国一家专业的移动开发技术培训机构。本书主要以其Android 训练营教学课程为基础,融合了几位作者多年的心得体会,是一本完全面向实战的Android 编程权威指南。全书共36 章,详细介绍了8 个Android 应用的开发过程。通过这些精心设计的应用,读者可掌握很多重要的理论知识和开发技巧,获得宝贵的开发经验。 第3 版较之前版本增加了对数据绑定等新工具的介......一起来看看 《Android编程权威指南(第3版)》 这本书的介绍吧!