V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
volvo007
V2EX  ›  Python

请教一个网站搭建的最佳实践

  •  
  •   volvo007 · 2021-01-19 22:29:18 +08:00 · 2902 次点击
    这是一个创建于 1431 天前的主题,其中的信息可能已经有所发展或是发生改变。

    大体上是一个 IoT 的项目管理+数据展示页面,主要需求:

    • 用户登录(可以没有注册功能)
    • 多个用户权限
    • 项目、设备的添加删除等管理
    • IoT 传感器数据从其他数据库接入
    • 项目、设备、传感器数据的交互性展示
    • IoT 总数据预计在亿级,但不会每次都拿出来。配上项目、设备这些条件,大约 10w - 100w 的量
    • 内部项目,访问量很少而且大多对反馈时间没有那么敏感
    • 数据敏感原因,暂不上云先单机( 32C64T,128G,硬盘管够)

    现在问题是,目前 py 的框架掌握还都比较浅。Flask,Django 和 fastapi,哪一个比较适合做上面的东西? js 的话也不算太会,刚入门。不过有需要我也可以花些时间自学

    IoT 因为时间序列数据很多,目前数据库 PostgreSQL + timescaledb 插件还行

    多谢论坛大佬指点

    9 条回复    2021-01-22 10:40:40 +08:00
    opengps
        1
    opengps  
       2021-01-19 22:32:00 +08:00
    没看到并发数要求,单机在承载高并发上存在天然瓶颈的
    volvo007
        2
    volvo007  
    OP
       2021-01-19 23:07:48 +08:00
    @opengps 谢谢关注,并发要求可以理解为“不需要” 😂,因为用户真的很少,同时在线的也就十来人而且大家基本都愿意等个几秒到十秒等到图像出来,这个没啥要求
    opengps
        3
    opengps  
       2021-01-19 23:36:12 +08:00
    @volvo007 关于并发数,你只想到了用户读取并发,没考虑 iot 设备数据写入并发,以我的工作经历为例(车载 gps 设备回发数据,某个时间点的线上数据),15 万设备,每秒钟单盘极限写入能力为 3000 行。一个月的历史数据是 15 亿。
    我举例重点在于,对于 iot 类别的项目,上亿的数据,查询未必是难点,写入耗费的时间和 io 才是项目重点要解决的地方。
    mmikoto
        4
    mmikoto  
       2021-01-19 23:42:06 +08:00
    github 有个开源项目叫 thingsboard,但是 java 的,几乎完美契合你的要求,除了用户权限可能不太符合,但是应该够用
    volvo007
        5
    volvo007  
    OP
       2021-01-19 23:51:45 +08:00 via iPhone
    @opengps 哦原来是这一块,学艺不精哈,补充下。目前 SSD 大小是 4T,日写入量是 100w,大小大约只有 10M 。一年的数量不会高于 50G
    根据目前的数据探索来看,每秒钟的写入量稳定在 5k-5k5 之间
    volvo007
        6
    volvo007  
    OP
       2021-01-19 23:53:20 +08:00 via iPhone
    @mmikoto 谢谢指点!不确定 java 还学不学得动了😂 毕竟全干工程师,一大堆活等着……
    nonduality
        7
    nonduality  
       2021-01-20 13:35:37 +08:00   ❤️ 1
    依我看,还是上 Django 吧,Django 自带用户权限管理,还有多个权限管理库可以使用,可以参考这篇 ,搜关键字“Controlling access: a Django permission apps comparison”(不过我写的一个项目由于比较复杂,自己撸了一套权限管理方案)。交互式展示估计得用 highchart 或 echart 之类的 js 库。

    FastApi 更适合开发 API server,跟你的要求不太一致; Flask 需要自配很多东西,等弄齐了,说不定你用 django 都写完了。
    encro
        8
    encro  
       2021-01-20 14:14:59 +08:00   ❤️ 1
    如果 django admin 够用的话,那就 django 吧,自带权限够用了。
    如果希望高度自定义界面,自己慢慢写,可以选择 fastapi,毕竟 django 和 flask 都是代码提示不友好的。


    个人感觉 python django 用来做做小工具还是可以,企业应用的话,需要自定义太多,最后往往原型 3 天,改起来三个月。
    volvo007
        9
    volvo007  
    OP
       2021-01-22 10:40:40 +08:00 via iPhone
    @nonduality
    我纠结的其实也是这几个点😂

    Django 自带 admin 应该好写,但是绘图方面就要再学 js 和相关库
    flask 接触最多,而且可以调用 dash/plotly 这种直接做交互 dashboard,但是要自己凑一堆组件头大
    fastapi 看起来比较简单也能挂载 flask app,但是感觉要一次性通过接口返回一百万数据什么的,总感觉很奇怪

    并不清楚这几个框架在生产环境下的表现,所以就迷茫了
    不过生产环境 Django 用得多那我就选 Django 吧(毕竟 Instagram 也撑住了)多谢🙏
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2791 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 07:56 · PVG 15:56 · LAX 23:56 · JFK 02:56
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.