python搭建簡易服務(wù)器分析與實(shí)現(xiàn)
省油寶用戶數(shù) 已經(jīng)破了6000,原有的靜態(tài)報(bào)表 已經(jīng)變得臃腫不堪,
每次打開都要緩上半天,甚至瀏覽器直接掛掉
采用python搭建一個(gè)最最簡易的 web 服務(wù) 請(qǐng)求一個(gè)nick
就返回 對(duì)應(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請(qǐng)求的方法
#問題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 '請(qǐng)求 ' + 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如何通過正則匹配指定字符開頭與結(jié)束提取中間內(nèi)容
這篇文章主要介紹了python通過正則匹配指定字符開頭與結(jié)束提取中間內(nèi)容的操作方法,本文結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-02-02Python中urllib與urllib2模塊的變化與使用詳解
urllib是python提供的一個(gè)用于操作URL的模塊,在python2.x中有URllib庫,也有Urllib2庫,在python3.x中Urllib2合并到了Urllib中,我們爬取網(wǎng)頁的時(shí)候需要經(jīng)常使用到這個(gè)庫,需要的朋友可以參考下2023-05-05Python獲取江蘇疫情實(shí)時(shí)數(shù)據(jù)及爬蟲分析
為了關(guān)注疫情狀況,今天我們用python來爬一爬疫情的實(shí)時(shí)數(shù)據(jù),本文通過實(shí)例圖文相結(jié)合給大家介紹的非常詳細(xì),需要的朋友參考下吧2021-08-08Python pandas.DataFrame調(diào)整列順序及修改index名的方法
這篇文章主要介紹了Python pandas.DataFrame調(diào)整列順序及修改index名的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2019-06-06Python讀取CSV文件的4種方法與注意事項(xiàng)
在python里面,讀取或?qū)懭隿sv文件時(shí)是經(jīng)常遇到的一個(gè)需求,這篇文章主要給大家介紹了關(guān)于Python讀取CSV文件的4種方法與注意事項(xiàng),需要的朋友可以參考下2023-10-10Python?numpy中np.random.seed()的詳細(xì)用法實(shí)例
在學(xué)習(xí)人工智能時(shí),大量的使用了np.random.seed(),利用隨機(jī)數(shù)種子,使得每次生成的隨機(jī)數(shù)相同,下面這篇文章主要給大家介紹了關(guān)于Python?numpy中np.random.seed()的詳細(xì)用法,需要的朋友可以參考下2022-08-08Flask框架實(shí)現(xiàn)給視圖函數(shù)增加裝飾器操作示例
這篇文章主要介紹了Flask框架實(shí)現(xiàn)給視圖函數(shù)增加裝飾器操作,結(jié)合實(shí)例形式分析了flask框架視圖添加裝飾器的具體操作方法及相關(guān)注意事項(xiàng),需要的朋友可以參考下2018-07-07詳解利用python-highcharts庫繪制交互式可視化圖表
本文主要和大家分享一個(gè)超強(qiáng)交互式可視化繪制工具-python-highcharts。python-highcharts就是使用Python進(jìn)行Highcharts項(xiàng)目繪制,簡單的說就是實(shí)現(xiàn)Python和Javascript之間的簡單轉(zhuǎn)換層,感興趣的可以了解一下2022-03-03Django應(yīng)用程序中如何發(fā)送電子郵件詳解
我們常常會(huì)用到一些發(fā)送郵件的功能,比如有人提交了應(yīng)聘的表單,可以向HR的郵箱發(fā)郵件,這樣,HR不看網(wǎng)站就可以知道有人在網(wǎng)站上提交了應(yīng)聘信息。下面這篇文章就介紹了在Django應(yīng)用程序中如何發(fā)送電子郵件的相關(guān)資料,需要的朋友可以參考借鑒。2017-02-02