python指令碼設定超時機制系統時間的方法

2022-09-27 08:42:19 字數 2245 閱讀 1060

本文為大家介紹了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等...