为什么VPS打开网站的速度如此缓慢,建立网站的花费是否合理?
摘要:vps打开网站很慢,创建一个网站的费用,集安网站制作,广东seo教程在过去的一个半月里我第一次作为后端开发组长角色参与公司项目从0到1的开发,记录这一次开发的经历。 1、背景介绍 首先说明一下背景。我所在的公司
vps打开网站很慢,创建一个网站的费用,集安网站制作,广东seo教程在过去的一个半月里我第一次作为后端开发组长角色参与公司项目从0到1的开发#xff0c;记录这一次开发的经历。
1、背景介绍
首先说明一下背景。我所在的公司是做智慧社区相关业务#xff0c;开发的项目是系统升级工具#xff0c;方便公司实施同事安装和升级系统。
参与后…在过去的一个半月里我第一次作为后端开发组长角色参与公司项目从0到1的开发记录这一次开发的经历。
1、背景介绍
首先说明一下背景。我所在的公司是做智慧社区相关业务开发的项目是系统升级工具方便公司实施同事安装和升级系统。
参与后端开发一共四个人包括我在内。其他三个同事有一个是应届生、两个做大数据的。按照公司的技术规划对内项目开发节奏要短平快用Python语言完成对外的项目一律用Java语言完成。
项目经过正常开发生命周期包括需求采集、产品设计、系统设计、详细设计、编码、测试等过程。其中详细设计就是针对接口做的详细设计一共用时3天完成设计了45个功能点包括40个接口和5个初始化准备工作。编码用时计划为3周。最终在时间点之内完成了相关的开发。
我在这次开发过程中担任的是组长的角色主要的任务包括
1项目框架的搭建。本次开发是一个从0到1的过程在此之前并没有Python项目的框架。
2关键技术的实现。包括通用接口复杂的技术点。
3任务分配。所有接口根据任务量分配给指定的成员完成最多的接口开发。 2、项目框架搭建
Python做web开发常用的项目框架其实并不是很多我的候选项有三个
Django 前后端不分离框架、Flask 最容易上手的框架、FastAPI 异步高性能框架。
对比这三个框架我从业务逻辑、公司技术栈、复杂度等三个角度出发选择了Flask。
业务逻辑
业务逻辑对性能并没有特别要求就是通过接口调用运维的ansible脚本没有高并发计算密集等任务所以三个都能满足。
技术栈
公司技术栈是前后端分离所以Django这种前后端不分离的框架并不适合虽然Django也可以做纯后端开发防杠。
复杂程度
复杂度来说肯定是Flask最简单。Django号称大而全配置复杂。FastAPI是异步框架需要学习异步编程虽然用来做同步框架也很丝滑但是学习成本需要增加很多。其他三个同事都没有做过Python项目所以尽量减少学习成本。
经过这三个方向的衡量最终确定了Flask框架搭配peewee orm数据库框架。核心的技术包括 1web框架 Flask 2数据库ORM框架 peewee 3数据库 sqlite 4运维脚本执行模块 subprocess 5WSGI服务 Gunicorn 6代码检查工具pre-commit 在编码前我已经准备好完整的项目框架写好了数据库CRUD接口的demo后续开发过程同事模仿相关接口一定程度上提高了开发效率。 3、关键技术实现
带团队开发并且是带领成员第一次做Python项目自然要将有挑战的任务安排给自己。在关键技术的实现上挑选三个有代表性的讲解。三个分别是系统命令执行通用接口、流式日志、sqlite 多线程写问题解决。
系统命令通用接口
项目主要用于公司开发的其他系统安装和升级因此需要调用运维人员用ansible编写的相关脚本。调用的ansible脚本格式如下
ansible-playbook 03.mysql.yml
ansible-playbook 08.zk.yml
需要到指定的路径下执行如上的命令。在详细设计阶段就知道需要使用Python调用系统命令的工具所以就让应届生同事调研了subprocess模块输出相关文档。一来是给新人一个学习方向再则借这个机会熟悉项目需要的技术。
在开发阶段根据对相关模块的理解完成了通用接口的开发。写通用接口切忌朝令夕改依赖它的代码也要随之变化。一两次还能接受次数多估计要被问候祖宗了。所以该接口实现程度不仅仅是写完而且是自己亲自调用确认没有问题才宣告完成。
在没有完成之前耐着性子调试直到没有任何问题才在群里告诉其他开发人员。整个系统中需要大量的调用该命令执行脚本最终也都比较顺利的完成没有因为接口造成的bug。
流式日志
按照产品的设计当一个组件在安装时需要在web页面上展示日志并且日志的格式要和终端中安装日志一样也就是一行一行的滚动打印。产品对日志的要求是全量滚动展示刷新页面要能够再次全量展示出来。为了实现该功能调研了三个方案 一、定时刷新。缺点日志有几万行每一次读取全部日志给前端前端会卡顿而且打印也不连续体验不好。 二、websocket。可以完成后端向前端的主动推送但是刷新页面并不会从头开始推送。 三、流式响应。可以将大块文件切分成小块分批传给前端刷新页面时会再次从头开始推送符合要求。
