Flask Toolbox: the missing toolbox for flask
2017-08-19flask_toolbox的起因
这个项目的最开始的原因,是因为使用了 ruby-toolbox ,它的好用 [1] 给我留下了深刻的印象, 简直是选择困难焦虑症患者的福音。那时候大概是2015年吧,awesome-list还未流行的时候, 对于python社区,没有啥类似的工具可以很好地帮助开发者来选择适当的库。我当时便有些想法, 想为python社区提供类似的一个工具。但是很明显,直接上手写这样的一个工具, python社区本身的package有太多,整理就是一个十分费功夫的事,容易一步跨太大扯着蛋。 而我当时比较熟悉的web框架就是flask,而且本身flask是一个micro framework, 很多功能是需要三方的扩展来实现。所以它变成为了我的实现目标。
在2016年寒假的时候,我在家把它的原型基本实现出来了,借助了 awesome-flask 内容和 ruby-toolbox 布局。 其大致主要分两个核心部分,一个是爬虫部分,定时收集相关package的github和PyPI信息, 另外一个部分是网站,把信息处理展示处理,方便开发者选择。
flask_toolbox的目标
正如其名,它是个flask的工具箱,旨在帮助开发者更好更快地找到合适的flask扩展。 虽然 awesome-flask 已经做得很好了,但是它解决的问题是,我可以用哪些。 比如我通过查找,知道我要完成A事情,可以使用X,Y,Z三个package,但是我真的要使用那个呢, 其实并没有明确的答案,谨慎的开发者还需要自己去看看三个package的维护情况,流行情况, 来做出最终的决定。
而flask_toolbox希望能够同时解决这两件事,它不仅把相关的package分门别类, 还收集了相关的github信息和PyPI信息,并且根据一定的规则(star数,fork数,下载量)计算这个package的得分, 来更好地帮助开发者选择。
一些碎碎念
降低开源项目的参与门槛
最近在考虑如何方便别人一起参与到这个项目,有那么几点想法,举个例子来讲:如何方便别人参与修改,增加package。
我一度想过,在网站上有个表单,有想要添加自己package的人,可以去填一下,然后后台有人再审核。 但是我很快就放弃这个想法。第一,我需要去实现这样的逻辑,基本的提交,后台的审核,添加管理员, 管理不同人员的权限等等,需要额外的代码来实现;第二,更为重要的原因,它不是去中心化的协作, 提交修改的人也许很多,但是有权限审核的人呢,不会太多,如果对于这个提交的package我有意见和建议呢, 我甚至都看不到或者没有权限留言。
所以我的决定是,使用packages.yml文件,表示category和package的信息和联系, 你要添加修改package,按照我们最熟悉的开源协作流程,fork并提个pr, 每个拥有github帐号的人都可以去评论,提出自己的意见和建议,它的整个过程是透明开放的, 并且和整个项目的开发没有分离,都是在github上进行的。
开源节流,降低项目的复杂度
项目最开始,使用了celery作为task queue,来处理爬虫任务。但是后来我就去掉了。主要的考虑是,第一, 我的项目很小,package也不多,以后估计撑死也不会多于200个,按照每天一次的更新频率,发的请求不超500, 感觉似乎没有必要,第二是它的引入带来了很多依赖,我要有个broker,store,还要装相关的package。
最终的决定就是,写个简单的脚本,一个个来爬嘛,使用crontab来做定时任务。就先这么用着,以后有需要再进化。