python搭建簡易服務(wù)器分析與實(shí)現(xiàn)
更新時(shí)間:2012年12月15日 15:51:21 作者:
本文將介紹python搭建簡易服務(wù)器實(shí)現(xiàn)步驟,需要了解的朋友可以參考下
需求分析:
省油寶用戶數(shù) 已經(jīng)破了6000,原有的靜態(tài)報(bào)表 已經(jīng)變得臃腫不堪,
每次打開都要緩上半天,甚至瀏覽器直接掛掉
采用python搭建一個(gè)最最簡易的 web 服務(wù) 請求一個(gè)nick
就返回 對應(yīng)的 報(bào)表數(shù)據(jù) 參數(shù)用GET方式傳送
調(diào)研與實(shí)現(xiàn):
園里沒找到靠譜的,google了半天,最終還是成功了。
以下是源碼,里面記錄了 其中的 一些問題
#! /usr/bin/env python
# -*- coding: utf-8 -*-
"""
@author: zhoujiebin
@contact: zhoujiebing@maimiaotech.com
@date: 2012-12-14 15:25
@version: 0.0.0
@license: Copyright maimiaotech.com
@copyright: Copyright maimiaotech.com
"""
import os
import sys
import urllib
import SimpleHTTPServer
import SocketServer
PORT = 8080
WEBDIR = "/home/zhoujiebing/report_web_service"
from syb_report_html import get_html
class Handler(SimpleHTTPServer.SimpleHTTPRequestHandler):
def translate_path(self, path):
#用于設(shè)定根目錄
os.chdir(WEBDIR)
SimpleHTTPServer.SimpleHTTPRequestHandler.translate_path(self,path)
def do_GET(self):
#服務(wù)器端響應(yīng)GET請求的方法
#問題1 如何拿到客戶端的GET參數(shù)
#我找半天沒找到,最后__dict__看到path里有路徑,只能從路徑里 提取參數(shù)了
#從path中提取 GET參數(shù)
nick = self.path[1:]
#漢字url轉(zhuǎn)碼
nick = str(urllib.unquote(nick))
if nick != 1:
report_html = get_html(nick)
else:
report_html = 'nick非法'
print '請求 ' + nick + ' 省油寶計(jì)劃報(bào)表'
self.send_response(200)
self.send_header("Content-type", "text/html")
self.send_header("Content-length", len(report_html))
self.end_headers()
self.wfile.write(report_html)
if __name__ == '__main__':
try:
httpd = SocketServer.TCPServer(("", PORT), Handler)
print "dir %s serving at port %s"%(repr(WEBDIR), PORT)
#啟動(dòng)服務(wù)器 端進(jìn)程
httpd.serve_forever()
except Exception,e:
print '異常',e
執(zhí)行這個(gè)程序 web服務(wù)程序 就啟動(dòng)了
在瀏覽器中 輸入 ip:8080/nick 就可以了
省油寶用戶數(shù) 已經(jīng)破了6000,原有的靜態(tài)報(bào)表 已經(jīng)變得臃腫不堪,
每次打開都要緩上半天,甚至瀏覽器直接掛掉
采用python搭建一個(gè)最最簡易的 web 服務(wù) 請求一個(gè)nick
就返回 對應(yīng)的 報(bào)表數(shù)據(jù) 參數(shù)用GET方式傳送
調(diào)研與實(shí)現(xiàn):
園里沒找到靠譜的,google了半天,最終還是成功了。
以下是源碼,里面記錄了 其中的 一些問題
復(fù)制代碼 代碼如下:
#! /usr/bin/env python
# -*- coding: utf-8 -*-
"""
@author: zhoujiebin
@contact: zhoujiebing@maimiaotech.com
@date: 2012-12-14 15:25
@version: 0.0.0
@license: Copyright maimiaotech.com
@copyright: Copyright maimiaotech.com
"""
import os
import sys
import urllib
import SimpleHTTPServer
import SocketServer
PORT = 8080
WEBDIR = "/home/zhoujiebing/report_web_service"
from syb_report_html import get_html
class Handler(SimpleHTTPServer.SimpleHTTPRequestHandler):
def translate_path(self, path):
#用于設(shè)定根目錄
os.chdir(WEBDIR)
SimpleHTTPServer.SimpleHTTPRequestHandler.translate_path(self,path)
def do_GET(self):
#服務(wù)器端響應(yīng)GET請求的方法
#問題1 如何拿到客戶端的GET參數(shù)
#我找半天沒找到,最后__dict__看到path里有路徑,只能從路徑里 提取參數(shù)了
#從path中提取 GET參數(shù)
nick = self.path[1:]
#漢字url轉(zhuǎn)碼
nick = str(urllib.unquote(nick))
if nick != 1:
report_html = get_html(nick)
else:
report_html = 'nick非法'
print '請求 ' + nick + ' 省油寶計(jì)劃報(bào)表'
self.send_response(200)
self.send_header("Content-type", "text/html")
self.send_header("Content-length", len(report_html))
self.end_headers()
self.wfile.write(report_html)
if __name__ == '__main__':
try:
httpd = SocketServer.TCPServer(("", PORT), Handler)
print "dir %s serving at port %s"%(repr(WEBDIR), PORT)
#啟動(dòng)服務(wù)器 端進(jìn)程
httpd.serve_forever()
except Exception,e:
print '異常',e
執(zhí)行這個(gè)程序 web服務(wù)程序 就啟動(dòng)了
在瀏覽器中 輸入 ip:8080/nick 就可以了
您可能感興趣的文章:
- Python多進(jìn)程與服務(wù)器并發(fā)原理及用法實(shí)例分析
- 用Python實(shí)現(xiàn)一個(gè)簡單的能夠上傳下載的HTTP服務(wù)器
- Python實(shí)現(xiàn)的簡單文件傳輸服務(wù)器和客戶端
- 400多行Python代碼實(shí)現(xiàn)了一個(gè)FTP服務(wù)器
- python實(shí)現(xiàn)簡單的TCP代理服務(wù)器
- python實(shí)現(xiàn)的文件同步服務(wù)器實(shí)例
- 用Python實(shí)現(xiàn)一個(gè)簡單的多線程TCP服務(wù)器的教程
- 使用Python實(shí)現(xiàn)簡單的服務(wù)器功能
- python實(shí)現(xiàn)FTP服務(wù)器服務(wù)的方法
- Python實(shí)現(xiàn)的服務(wù)器示例小結(jié)【單進(jìn)程、多進(jìn)程、多線程、非阻塞式】
相關(guān)文章
使用Python中wordcloud庫繪制詞云圖的詳細(xì)教程
這篇文章主要介紹了如何使用Python的wordcloud庫從Excel數(shù)據(jù)生成詞云圖,包括環(huán)境準(zhǔn)備、詞云圖的基本原理、生成詞云圖的步驟、保存詞云圖以及高級自定義(形狀與顏色),文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下2024-12-12
聊聊Numpy.array中[:]和[::]的區(qū)別在哪
這篇文章主要介紹了在Numpy.array中[:]和[::]的區(qū)別說明,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-05-05
詳解python實(shí)現(xiàn)多張多格式圖片轉(zhuǎn)PDF并打包成exe
這篇文章主要為大家介紹了python實(shí)現(xiàn)多張多格式圖片轉(zhuǎn)PDF并打包成exe方式詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-01-01
TensorFlow 2.0之后動(dòng)態(tài)分配顯存方式
這篇文章主要介紹了TensorFlow 2.0之后動(dòng)態(tài)分配顯存方式,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-12-12
python實(shí)現(xiàn)逢七拍腿小游戲的思路詳解
這篇文章主要介紹了python實(shí)現(xiàn)逢七拍腿小游戲的思路,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-05-05
python3-flask-3將信息寫入日志的實(shí)操方法
在本篇文章里小編給大家整理的是關(guān)于python3-flask-3將信息寫入日志的實(shí)操方法,有興趣的朋友們學(xué)習(xí)下。2019-11-11
在pytorch中如何查看模型model參數(shù)parameters
這篇文章主要介紹了在pytorch中如何查看模型model參數(shù)parameters,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-11-11

