最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Tornado Web Server框架編寫(xiě)簡(jiǎn)易Python服務(wù)器

 更新時(shí)間:2018年07月28日 14:49:08   作者:acdreamers  
這篇文章主要為大家詳細(xì)介紹了Tornado Web Server框架編寫(xiě)簡(jiǎn)易Python服務(wù)器,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

我們都知道在Web開(kāi)發(fā)中,都需要服務(wù)器,比如Java Web開(kāi)發(fā)的Tomcat,WebLogic,WebSphere,現(xiàn)在來(lái)看利用Tornado Web Server框架如何寫(xiě)一個(gè)簡(jiǎn)易的Python服務(wù)器。

一般來(lái)說(shuō)只需要實(shí)現(xiàn)get和post方法就可以了。以上次使用redis數(shù)據(jù)庫(kù)的例子說(shuō)明,數(shù)據(jù)庫(kù)插入代碼如下:

import redis
import datetime
 
class Database:
  def __init__(self):
    self.host = 'localhost'
    self.port = 6379
    self.write_pool = {}
 
  def add_write(self,website,city,year,month,day,deal_number):
    key = '_'.join([website,city,str(year),str(month),str(day)])
    val = deal_number
    self.write_pool[key] = val
 
  def batch_write(self):
    try:
      r = redis.StrictRedis(host=self.host,port=self.port)
      r.mset(self.write_pool)
    except Exception, exception:
      print exception
      
 
def add_data():
  beg = datetime.datetime.now()
  db = Database()
  for i in range(1,10000):
    db.add_write('meituan','beijing',2013,i,1,i)
  db.batch_write()
  end = datetime.datetime.now()
  print end-beg
      
if __name__ == '__main__':
  add_data()

以上代碼插入了數(shù)據(jù),那么現(xiàn)在用我們的服務(wù)器來(lái)訪問(wèn)一些數(shù)據(jù)。

import json
import redis
import tornado.web
import tornado.httpserver
from tornado.options import define, options
 
define("port", default=8888, type=int)
 
class DealHandler(tornado.web.RequestHandler):
  def initialize(self):
    self.port = 6379
    self.host = "localhost"
 
  def get(self):
    website = self.get_argument("website",None)
    city  = self.get_argument("city",None)
    year  = self.get_argument("year",None)
    month  = self.get_argument("month",None)
 
    keyset = []
    for i in range(1,31):
      key = '_'.join([website,city,year,month,str(i)])
      keyset.append(key)
 
    r = redis.StrictRedis(host=self.host,port=self.port)
    self.write( json.dumps(r.mget(keyset)) )
 
class ExampleHandler(tornado.web.RequestHandler):
  def get(self):
    who = self.get_argument("who", None)
    if who:
      self.write("Hello, " + who)
    else:
      self.write("Hello World!")
    
  def post(self):
    who = self.get_argument("who", None)
    if who:
      self.write("Hello, " + who)
    else:
      self.write("Hello World!")
 
class Application(tornado.web.Application):
  def __init__(self):
    handlers = [
      (r"/", ExampleHandler),
      (r"/deal", DealHandler),
    ]
    settings = dict()
    tornado.web.Application.__init__(self, handlers, settings)
 
def create_server():
  tornado.options.parse_command_line()
  http_server = tornado.httpserver.HTTPServer(Application())
  http_server.listen(options.port)
  tornado.ioloop.IOLoop.instance().start()
 
if __name__ == "__main__":
  create_server()

以上代碼實(shí)現(xiàn)了一個(gè)簡(jiǎn)單的服務(wù)器,用于處理http請(qǐng)求。

在瀏覽器中輸入:

http://localhost:8888/deal?website=meituan&city=beijing&year=2013&month=9

即可得到需要的數(shù)據(jù)。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • python中CURL 和python requests的相互轉(zhuǎn)換實(shí)現(xiàn)

    python中CURL 和python requests的相互轉(zhuǎn)換實(shí)現(xiàn)

    本文主要介紹了python中CURL 和python requests的相互轉(zhuǎn)換實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-03-03
  • python深度優(yōu)先搜索和廣度優(yōu)先搜索

    python深度優(yōu)先搜索和廣度優(yōu)先搜索

    這篇文章主要介紹了python實(shí)現(xiàn)圖的深度優(yōu)先搜索和廣度優(yōu)先搜索相關(guān)知識(shí)點(diǎn),對(duì)此有興趣的朋友學(xué)習(xí)下。
    2018-02-02
  • 基于Keras中Conv1D和Conv2D的區(qū)別說(shuō)明

    基于Keras中Conv1D和Conv2D的區(qū)別說(shuō)明

    這篇文章主要介紹了基于Keras中Conv1D和Conv2D的區(qū)別說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-06-06
  • Python解決“ImportError:?Couldn‘t?import?Django”問(wèn)題全攻略

    Python解決“ImportError:?Couldn‘t?import?Django”問(wèn)題全攻略

    本文主要介紹了Python解決“ImportError:?Couldn‘t?import?Django”問(wèn)題全攻略,具有一定的參考價(jià)值,感興趣的可以了解一下
    2025-03-03
  • 基于OpenCV4.2實(shí)現(xiàn)單目標(biāo)跟蹤

    基于OpenCV4.2實(shí)現(xiàn)單目標(biāo)跟蹤

    這篇文章主要介紹了如何和何時(shí)使用OpenCV 4.2中可用的8種不同的跟蹤器- BOOSTING, MIL, KCF, TLD, MEDIANFLOW, GOTURN, MOSSE和CSRT,并用他們實(shí)現(xiàn)單目標(biāo)跟蹤,需要的可以參考一下
    2022-03-03
  • 在python3中pyqt5和mayavi不兼容問(wèn)題的解決方法

    在python3中pyqt5和mayavi不兼容問(wèn)題的解決方法

    今天小編就為大家分享一篇在python3中pyqt5和mayavi不兼容問(wèn)題的解決方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-01-01
  • 深入解析python項(xiàng)目引用運(yùn)行路徑

    深入解析python項(xiàng)目引用運(yùn)行路徑

    這篇文章主要介紹了python項(xiàng)目引用運(yùn)行路徑的問(wèn)題,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-05-05
  • python繪制地震散點(diǎn)圖

    python繪制地震散點(diǎn)圖

    這篇文章主要為大家詳細(xì)介紹了python繪制地震散點(diǎn)圖的相關(guān)方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-06-06
  • python 字典的打印實(shí)現(xiàn)

    python 字典的打印實(shí)現(xiàn)

    這篇文章主要介紹了python 字典的打印實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • Python屬性私有化詳解

    Python屬性私有化詳解

    私有化是為了實(shí)現(xiàn)更好的封裝形式。能隱藏屬性,不被隨意修改。以前置雙下劃線__屬性/方法名定義,但是結(jié)尾不能是雙下劃線。如果不讓某些屬性在類外部被隨意更改,可設(shè)置成私有屬性。在類定義的內(nèi)部可以訪問(wèn)
    2023-02-02

最新評(píng)論

乡宁县| 湖口县| 安吉县| 荣昌县| 和平县| 大洼县| 鄂州市| 启东市| 潮州市| 勃利县| 乡城县| 门头沟区| 右玉县| 顺昌县| 儋州市| 丹东市| 汝南县| 远安县| 兴仁县| 介休市| 西藏| 东乌珠穆沁旗| 读书| 资溪县| 鄱阳县| 朔州市| 班玛县| 南宁市| 八宿县| 杂多县| 安徽省| 泽库县| 封开县| 上饶市| 安塞县| 那坡县| 大化| 克拉玛依市| 睢宁县| 三原县| 修文县|