我需要独立地检查当前时间(顺便说一句,与系统提供的时间交叉检查),我想为此使用NTP协议。
有一个NTP模块(ntplib)允许查询一个 NTP服务器:
>>> import ntplib
>>> import time
>>> time.ctime(ntplib.NTPClient().request('europe.pool.ntp.org', version=3).tx_time)
'Wed Nov 18 17:17:16 2015'我想使用NTP功能来组合来自几个NTP服务器的响应来获得一个最优响应。
NTP协议使用Marzullo算法的修改版本来选择精确的时间服务器,并设计它以减轻可变网络延迟的影响。
在Python (理想情况下是3.x)中,怎样才是正确的方法来利用它呢?
发布于 2015-11-19 06:09:33
在Python (理想情况下是3.x)中,怎样才是正确的方法来利用它呢?
基本上,您必须在Python.中实现Marzullo的算法。
一旦查询了两个服务器,如何确定哪个时钟更接近原子钟?
确定“最佳反应”(即。最精确的时间来源)是一项棘手的工作。
您正在寻找的是一个NTP implementation,除非您想在python中滚动自己的implementation。
wiki页面上讨论的NTP协议正在讨论NTP 参考实施。这包括在所有服务器上运行的ntp守护进程。ntp守护进程跟踪远程参考服务器,以及哪些服务器是活动的,并且是最准确的。Ntp守护进程然后关闭或步进您的时钟,以匹配远程时钟。
可能是您实现所需的最简单的方式,它是在客户端模式下在服务器上运行一个ntp守护进程(即使用引用实现)。在您的ntp.conf中,列出您试图从其中查找“最佳响应”的所有时间服务器。当您运行ntpd时,守护进程将为您确定最低层、最精确和可用的引用服务器。
您所需要做的就是ntpq -p,时间最准确的远程服务器将是旁边有星号的服务器。
下面是一些示例输出:
remote refid st t when poll reach delay offset jitter
==============================================================================
LOCAL(0) .LOCL. 10 l 96h 64 0 0.000 0.000 0.000
*ns2.example.com 10.193.2.20 2 u 936 1024 377 31.234 3.353 3.096https://stackoverflow.com/questions/33785230
复制相似问题