2011-03-07 50 views
4

我在羣集上運行一些作業,其中每個節點上的日期稍微偏離彼此。有沒有一種簡單的方法來從互聯網上的某個地方通過python獲得時間,還是我需要讓sysadmin更頻繁地同步機器之間的時間?在Python中獲取正確時間的簡單方法

我想在每個作業的輸出中加上一個時間戳,但顯然Python的time.strftime()等的準確性將取決於機器知道正確的時間。我希望在幾秒鐘內就能夠獲得準確性,但現在只需幾分鐘。

+0

看看:http://stackoverflow.com/questions/908550/python-getting-date-online – 2011-03-07 17:36:41

+8

這是一個解決的問題。你的系統管理員應該照顧它;你的機器的時間沒有任何理由超過幾分之一秒。 – kindall 2011-03-07 17:47:45

回答

5

聽起來像你應該看看使用類似NTP的東西來保持機器的時間相互同步(最好是全球標準時間源)。

7

我處理與運行的是Linux 2.6.33,Python的2.6.5,可惜一個獨立的傳感器設備缺少一個實時時鐘,但確實具有聯網能力。此外,該設備使用BusyBox,因此它具有最小化的一組工具功能。

我創建了下面的腳本,它在網絡運行後執行以糾正系統時間。我的解決方案可能不完全解決原始問題(聽起來像Noah是用戶而不是系統管理員),但是這個問題是通過NTP使用Python搜索同步系統時鐘時出現的問題。我認爲這可能會幫助其他人降落在這裏。

在使用腳本之前,您需要安裝ntplib。下載鏈接和安裝說明如下:https://pypi.python.org/pypi/ntplib/

將以下代碼的內容複製到一個文件中(我命名爲我的「synctime.py」)。然後,在網絡運行後,執行腳本(例如「python synctime.py」)。您需要使用提升(root)權限來執行此操作,以便正常工作。

import time 
import os 

try: 
    import ntplib 
    client = ntplib.NTPClient() 
    response = client.request('pool.ntp.org') 
    os.system('date ' + time.strftime('%m%d%H%M%Y.%S',time.localtime(response.tx_time))) 
except: 
    print('Could not sync with time server.') 

print('Done.') 
相關問題