首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用多个服务器进行完整的NTP调用?

如何使用多个服务器进行完整的NTP调用?
EN

Stack Overflow用户
提问于 2015-11-18 16:24:39
回答 1查看 1.1K关注 0票数 2

我需要独立地检查当前时间(顺便说一句,与系统提供的时间交叉检查),我想为此使用NTP协议。

有一个NTP模块(ntplib)允许查询一个 NTP服务器:

代码语言:javascript
复制
>>> 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)中,怎样才是正确的方法来利用它呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 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,时间最准确的远程服务器将是旁边有星号的服务器。

下面是一些示例输出:

代码语言:javascript
复制
    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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33785230

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档