將網域名稱和ip分為三段,網域名稱前、本網域名稱、網域名稱後,寫到新配置檔案中,
當檢測新配置檔案沒錯誤時,備份配置檔案,將新配置檔案重新命名為配置檔名,重啟伺服器
import shutildef fetch(domain):
find_domain = "backend %s" % domain
is_find_domain = false
server_list =
with open('haproxy.conf','r') as r:
for line in r:#前面排除錯誤的,最後是正確的
curr = line.strip()
#print curr
if curr == find_domain:
#print true
is_find_domain = true
elif is_find_domain and curr.startswith("backend"):
break
elif is_find_domain and curr:
return server_list
def add(domain,server):
server_list = fetch(domain)
print server_list
if not server_list:#如果列表為空,則新增至最後
write_domain = "\nbackend %s\n" % domain
write_server = "\t%s\n" % server
with open('haproxy.conf','a') as a:
a.write(write_domain)
a.write(write_server)
pass
elif server not in server_list:
find_domain = "backend %s" % domain
is_find_domain = false
with open('haproxy.conf','r') as r,open('haproxy.conf-new','w') as w:
for line in r:
curr = line.strip()
# print curr
if curr == find_domain:#如果找到,則將該網域名稱及其所屬ip寫入新配置檔案
# print true
is_find_domain = true
w.write("%s\n" % find_domain)
for server_temp in server_list:
w.write("\t%s\n" % server_temp)
elif is_find_domain and curr.startswith("backend"):
is_find_domain = false
w.write(line)
elif curr not in server_list and curr:
w.write(line)
pass
#分三段,網域名稱前、本網域名稱、網域名稱後
#備份配置檔案
#新增過後,若檢查新配置語法正確,則將新配置檔案中的內容寫到配置檔案中
shutil.copy('haproxy.conf-new',"haproxy.conf")
def addnum(a,b):return a + b
print map(addnum,[1,2,3],[4,5,6])
def reduce1(a,b):
return a + b
print reduce(reduce1,[1,2,3],10)
def filter1(a):
if a:
return true
print filter(filter1,[4,5,0,,'',6])
#斐波那契數列 0 1 1 2 3 5 求和大於1000時的位數
def feiboone(num):
if num <= 1:
return num
else:
return feiboone(num - 1) + feiboone(num - 2)
def feibo_pos(all,sum=0,pos=-1):
while sum < all:
pos += 1
sum += feiboone(pos)
#print pos
return pos
all = 100000
print feibo_pos(all)
相關功能的**集合
.py檔案、資料夾__init__.py
ossys
json、pickle
subprocess執行系統命令、checkoutoutput、popen
paramikoe
3 函式和模組
coding utf 8 author liuyb 模組 import sysimport reimport array import queue import copy dir 檢視函式所有的功能 def fuc dir return dir sys coding utf 8 函式模組學習 定義函...
Prthon3 遞迴函式
定義 1 在乙個函式裡再呼叫這個函式本身 2 有明確的結束條件 遞迴函式的最大深度 1 理論上,官方文件說明是1000 2 實際測試是998 檢測方法 def foo n print n n 1 foo n foo 1 3 最大深度可以修改,修改命令 不建議修改 import sys sys.set...
Python3 遞迴函式
1.必須有乙個明確的結束條件 2.每次進入更深一層遞迴時,問題規模相比上次遞迴都應有所減少 3.遞迴效率不高,遞迴層次過多會導致棧溢位 在計算機中,函式呼叫是通過棧 stack 這種資料結構實現的,每當進入乙個函式呼叫,棧就會加一層棧幀,每當函式返回,棧就會減一層棧幀。由於棧的大小不是無限的,所以,...