当前位置: 首页 > news >正文

宿迁网站建设介绍公司市场推广方式有哪几种

宿迁网站建设介绍公司,市场推广方式有哪几种,python网站建设代码,新泰房产网58个人出售说明 想法变的真快 本来是没打算用Tornado的,主要是想节约时间。但是现在看来不用还是不行:目前用gevent flask部署的时候,启动多核的worker似乎存在问题。 另外,有很多内部基础的数据服务,其实并不需要flask的各种组…

说明

想法变的真快

本来是没打算用Tornado的,主要是想节约时间。但是现在看来不用还是不行:目前用gevent + flask部署的时候,启动多核的worker似乎存在问题。

另外,有很多内部基础的数据服务,其实并不需要flask的各种组件。

所以还是丢掉幻想,老老实实搭一个Tornado服务。

内容

1 背景

Tornado其实是我最早使用的Web服务框架,甚至现在还有一个服务是使用Tornado的,整体的效率真的很不错。

后来之所以用Flask,更多还是基于前端的考虑。

在确定了使用微服务体系后,其实应该直接再采用Tornado的,但当时有两个考虑:

  • 1 Flask使用的还不熟,同时用两个脑子不够用
  • 2 大部分情况下,Flask也是可以顶住的

现在看来,Web框架分为两类更为合理:一类面向流程,一般是低CPU耗用的应用,例如Portal,或者IO。另一类面向计算,一般会有更高的CPU耗用,而不用管流程上的问题(例如权限)

目前Flask那套,不说多么精通,至少很熟练了(不费精力就能轻易使用),所以现在倒不担心Tornado有啥额外负担。

另外,Tornado的定位很明确,就是进行内部的数据处理,不管任何权限类的事。所以可以构造非常简单的应用模型。

2 原理

先复习一下Tornado,以下内容参考这篇文章。

引用:
非阻塞式和基于Linux的Epoll(UNIX为kqueue)的异步网络IO异步非阻塞IO处理方式,单进程单线程异步IO的网络模型,可以编写异步非阻塞的程序非常适合开发长轮询、WebSocket和需要与每个用户建立持久连接的应用既是WebServer也是WebFramework

所以是适合处理处理的。

在这里插入图片描述

3 实现

先看看我的镜像里是否有包:

在这里插入图片描述

在老代码稍微改改就好了,突然回忆起了足够多的内容

'''
服务逻辑,字段设计
'''
# from server_funcs import *
import tornado.httpserver  # http服务器
import tornado.ioloop  # ?
import tornado.options  # 指定服务端口和路径解析
import tornado.web  # web模块
from tornado.options import define, options
import os.path  # 获取和生成template文件路径import json
from json import JSONEncoder
class MyEncoder(JSONEncoder):def default(self, obj):if isinstance(obj, np.integer):return int(obj)elif isinstance(obj, np.floating):return float(obj)elif isinstance(obj, np.ndarray):return obj.tolist()if isinstance(obj, datetime):return obj.__str__()if isinstance(obj, dd.timedelta):return obj.__str__()else:return super(MyEncoder, self).default(obj)# json.dumps(foo, cls=MyJsonEncoder)# 如果路径不存在则创建
def create_folder_if_notexist(somepath):if not os.path.exists(somepath):os.makedirs(somepath)return Truem_static = os.path.join(os.getcwd(),'m_static')
m_template = os.path.join(os.getcwd(),'m_template')create_folder_if_notexist(m_static)
create_folder_if_notexist(m_template)settings = {
'static_path':m_static,
'template_path':m_template
}
app_list = []IndexHandler_path = r'/'
class IndexHandler(tornado.web.RequestHandler):def get(self):self.write('【GET】This is Website for Internal API System')self.write('Please Refer to API document')print('Get got a request test')def post(self):request_body = self.request.bodyprint('Trying Decode Json')some_dict = json.loads(request_body)print(some_dict)msg_dict = {}msg_dict['info'] = '【POST】This is Website for Internal API System'msg_dict['input_dict'] = some_dictself.write(json.dumps(msg_dict))print('Post got a request test')
IndexHandler_tuple = (IndexHandler_path,IndexHandler)
app_list.append(IndexHandler_tuple)if __name__ == '__main__':tornado.options.parse_command_line()apps = tornado.web.Application(app_list, **settings)http_server = tornado.httpserver.HTTPServer(apps)define('port', default=8000, help='run on the given port', type=int)http_server.listen(options.port)tornado.ioloop.IOLoop.instance().start()

调试

在这里插入图片描述
一些简单的要点:

  • 1 server_funcs用来存放业务相关的函数
  • 2 每次只需要定义一个新的对象,一般来说只要管post方法的重写
  • 3 在post里按接口系统的约定 ,做吞吐json的处理

其他

Tip1: IOLoop.current() IOLoop.instance() 差别
在这里插入图片描述

http://www.yayakq.cn/news/573211/

相关文章:

  • 网站站内优化艺术学院网站建设管理办法
  • 永久免费自助建站东莞网站建设快速排名
  • 黄石网站推广排名服务重新建设网站的请示
  • 网站建设订制版合同模板网站投注员怎么做
  • 厦门品牌网站建设中山市西区建设局网站
  • html5网站有点建设银行如何招聘网站
  • 网站内容和备案不一样西宁做网站君博相约
  • 页面设计翻译seo怎么优化效果更好
  • 公益网站建设的意义白云网站建设多少钱
  • 网站模板超市广东深圳区号
  • 佛山专业的免费网站优化wordpress蒲公英代码
  • 兰州网站建设慕枫襄阳网站建设价格
  • 绿色健康网站模板中国万网登录入口
  • 解决方案网站设计网站服务器是主机吗
  • 住房和城建设网站安徽百度推广怎么做
  • 北辰正方建设集团有限公司官方网站个人建站软件
  • 营销网站建设的重要性出口外贸交易平台
  • 网络公司网站建设方案青岛网站建设方案优化
  • 做网站要找什么软件wordpress速度太慢
  • 百度网站推广服务商开发文档
  • 网站搭建教学怎么做论坛社区网站
  • 苏州企业网站建哪些网站做的比较炫
  • 东莞长安 网站建设优化公司网站
  • 众筹网站功能网站百度快照怎么做
  • 做网站公司叫什么wordpress解密主题
  • 电脑上做网站myeclipse怎样做网站
  • 有什么图片做视频的网站吗50款app软件免费下载
  • 网站建设进度规划网站建设用什么语言开发
  • 苏州做网站推广的公司哪家好微商城网站建设策划方案
  • 专门帮做ppt的网站西安网约车驾驶员资格证网上报名