本文為大家介紹了python指令碼設定系統時間的方法,一共有兩種,其一是呼叫socket直接傳送udp包到國家授時中心,其二是呼叫ntplib包。我在本地電腦ping 國家授時中心位址cn.pool.ntp.org有時出現丟包,然而,二者都沒有檢查udp是否丟包的機制,方法一在udp丟包後一直處於阻塞狀態無法退出,方法二雖然會提示超時,但是不再做其它嘗試,比如重新發包,或者向同乙個網域名稱的不同ip位址發包。於是,嘗試在方法一的**基礎上,增加了超時機制,並且嘗試向同乙個網域名稱的不同ip位址發包。
具體修改後的完整**如下:
#-*- coding:utf-8 -*-
import socket
import struct
import time
import win32api
import os
import re
def gettime(timeserveraddresses):
time_1970 = 2208988800l
client = so socket.sock_dgram)
client.settimeout(3)
data = '\x1b' + 47 * '\0'
#timeserver_ip=socket.gethostbyname('cn.pool.ntp.org')
#timeserver_ip='202.118.1.130'
port=123
for address in timeswww.cppcns.comerveraddresses:
success=false
count=0
while not success and count<3:
print address,count
try:
client.sendto(data, (address, port))
data, address = client.recvfrom(1024)
success=true
except socket.timeout:
print 'request timed out!'
count=count+1
if success==true:a
break
data_result = struct.unpack('!12i', data)[10]
dauxqhjwirbta_result -= time_1970
return data_result
def setsystemtime(now_time):
tm_year, tm_mon, tm_mday, tm_hour, tm_min, tm_sec, tm_wday, tm_yday, tm_isdst = time.gmtime(now_time)
win32api.setsystemtime(tm_year, tm_mon, tm_wday, tm_mday, tm_hour, tm_min, tm_sec, 0)
print "set system ok!"
def getserverip():
res1=os.popen('nslookup cn.pool.ntp.org')
resuluxqhjwirbt1=res1.read()
addresses=result1.split('\n\n')[1].split('\n')[1][12:].split(',')
return addresses
#for address in addresses:
# res=os.popen('ping -n 2 '+address)
# result=res.read()
# received_num=int(re.findall('received = [0-9]',result)[0].split('=')[1])
# if received_num > 1:
# break
#timeserver=address
if __name__ == '__main__':
addresses=getserverip()
now_time=gettime(addresses)
setsystemtime(now_time)
print "%d-%d-%d %d:%d:%d" % time.localtime(now_time)[:6]
本文標題: python指令碼設定超時機制系統時間的方法
本文位址: /jiaoben/python/142950.html
nginx超時機制和設定
在nignxi中,超時自動重發,預設是開啟的,需要關閉配置。nginx中增加配置 proxy next upstream off proxy send timeout 後端伺服器資料回傳時間 傳送超時時間 proxy read timeout 連線成功後,後端伺服器響應時間 接收超時時間 proxy...
RPC超時機制
linux下rpc支援簡單的超時重傳機制,採用了固定超時時間間隔和固定重試次數。當rpc服務傳送乙個報文時 對應一次遠端過程呼叫 它便啟動乙個定時器 如果定時器在遠端過程呼叫應答到達前期滿,rpc服務便重發請求。程式設計師可以為某個給定應用調整超時時間間隔以及重試次數,但無法自適應。這種簡單機制無法...
haproxy 超時機制
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!code class python option redispatch option redispatch 是否允許重新分配在session 失敗後 option abortonclose 丟棄由於客戶端等待時間過長而關閉連線但仍在haproxy等...