我在群集上运行一些作业,每个节点上的日期彼此略微偏离.有没有一种简单的方法可以通过python从互联网上的某个地方获取时间,还是我需要让sysadmin更频繁地同步机器之间的时间?
我想在我发布的每个作业的输出中加上时间戳,但很明显,python time.strftime()等的准确性将取决于机器知道正确的时间.我会在几秒钟内爱上精确度,但现在它只需几分钟.
我负责的是运行的是Linux 2.6.33,Python的2.6.5,可惜缺少一个实时时钟,而是一个独立的传感器设备并具有联网能力.此外,该设备使用BusyBox,因此它具有最小化的工具功能集.
我创建了下面的脚本,该脚本在网络运行后执行以更正系统时间.我的解决方案可能并不完全解决原始问题(听起来诺亚是用户而不是系统管理员),但这个问题是在使用Python通过NTP搜索同步系统时钟时出现的问题.我认为它可能会帮助其他人降落在这里.
在使用脚本之前,您需要安装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.')
Run Code Online (Sandbox Code Playgroud)