国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

python負載均衡的簡單實現方法

2020-02-22 23:06:50
字體:
來源:轉載
供稿:網友

提到分發請求,相信大多數人首先會想到Nginx,Nginx作為一種多功能服務器,不僅提供了反向代理隱藏主機ip的能力,還擁有簡單的緩存加速功能。當然Nginx最強大的功能還是分發請求,不僅提供了哈希,一致性哈希,負載均衡等多種請求分發模式,還保證了自己服務的輕量和穩定。一臺Nginx服務器常年工作在高并發請求的環境下,也極少宕機。

在Nginx負載均衡模式下,請求會發送到壓力最小的未宕機服務器上。今天我們不考慮目標服務器的壓力,用python實現最簡單的負載均衡方法,即將請求發送到未宕機的服務器上。

我們想調用module_b模塊中的接口,module_b服務在10.10.10.115服務器上的10081,10082,10083,10084這4個端口上。

#!/usr/bin/python# -*- coding: utf-8 -*-import requestsimport randomimport osimport sysimport timeimport ConnectionErrorimport Module_bExceptionmodule_b = "10.10.10.115:10081,10.10.10.115:10082,10.10.10.115:10083,10.10.10.115:10084"class Module_b():  def __init__(self):    self.url_prefix = [val.strip() for val in module_b.split(',')]  def _request(self, short_uri, payload):    res = None    try_count = 1    url_prefixs = self.url_prefix[:]    url_prefixs.sort(key=lambda f: random.randint(0, 100))          for curr_url_prefix in url_prefixs:      url = os.path.join(curr_url_prefix, short_uri)      try:        res = requests.post(url, data=payload)        break      except ConnectionError as e:        try_count += 1        sys.stderr.write('can not connect to Module_b, retry .../n')        time.sleep(1)        if try_count == len(url_prefixs):          raise e    if res.status_code != 200:      raise Module_bException('HTTP ERROR: %s' % res.text)    result = res.json()    if result['status'] != '0':      raise Module_bException(result['errstr'])    return result['result']

ConnecttionError和Module_bException為封裝好的報錯類無需在意。

整個負載均衡的實現也很簡單,傳入api和參數,然后從所有的module_b地址中隨機選出一個,拼接成完整的requests請求,如果無法訪問到module_b服務,那么將換到另一個未訪問過的module_b服務地址,直到訪問過全部的module_b服務。

總結

以上所述是小編給大家介紹的python負載均衡的簡單實現方法,希望對大家有所幫助,如果大家有任何疑問歡迎給我留言,小編會及時回復大家的!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 清徐县| 肇东市| 和田市| 芒康县| 旅游| 绥阳县| 利辛县| 东乌珠穆沁旗| 四平市| 阜阳市| 山丹县| 西城区| 镇江市| 固镇县| 阳高县| 建始县| 固原市| 灵丘县| 连平县| 祁阳县| 双流县| 绥宁县| 泗洪县| 郑州市| 翼城县| 桑植县| 金溪县| 共和县| 金山区| 福清市| 贵溪市| 富阳市| 沭阳县| 江西省| 夹江县| 望谟县| 绥芬河市| 麻江县| 阿克苏市| 新民市| 绥中县|