请教一个网站搭建的最佳实践 - V2EX
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 3240 次点击
    这是一个创建于 1758 天前的主题,其中的信息可能已经有所发展或是发生改变。

    大体上是一个 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     Solana     910 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 28ms UTC 20:10 PVG 04:10 LAX 12:10 JFK 15:10
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86