2011-03-07 51 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.') 
相关问题