Python 如何使用多台服务器进行完整的NTP呼叫?

Python 如何使用多台服务器进行完整的NTP呼叫?,python,ntp,Python,Ntp,我需要独立地检查当前时间(顺便说一句,与系统提供的时间交叉检查),我想使用NTP协议来实现这一点 有一个NTP模块(),允许查询一台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服务器:

>>> 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)中,什么是利用这一点的正确方法

在Python(理想情况下是3.x)中,什么是利用这一点的正确方法

基本上,您必须用Python实现Marzullo的算法。

一旦您查询了两台服务器,您将如何确定哪个时钟更接近原子钟

确定“最佳响应”(又称最准确的时间源)是一件棘手的事情

您需要的是一个NTP
实现
,除非您想用python实现自己的实现

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.096

谢谢,我在平台上运行NTP,但(长话短说)我需要独立检查时间。顺便说一句,时间最准确的远程服务器将是旁边有星号的服务器。不完全正确-这是计算核心时间时考虑的服务器,根据我在问题中提到的链接,其他服务器也参与了计算。WoJ:您指的是活动对称模式(对等模式)。我是对的,因为我在谈论客户机模式。我可以更新答案以反映这一点。此外,您是在找人为您编写基于python的NTP实现,还是在尝试开发自己的NTP实现?如果您查看,将针对多个服务器计算对本地时间的校正(然后用于修改本地时钟,缓慢或一次性)。我对NTP服务器的实现不感兴趣,而是对NTP客户端的实现感兴趣,它将考虑对多个服务器的查询,而不是像
ntplib
那样只考虑一个服务器。这就是说,由于我没有找到任何这样的实现,我将编写自己的(糟糕的)实现,它将丢弃统计上可疑的服务器。是的,WoJ,NTP必须轮询所有远程服务器,以确定哪一个是客户端模式的最佳时间源。。。。但并非所有NTP模式都计算用于同步的远程服务器上的平均时间。只有对等模式才能做到这一点。谷歌NTP模式。