Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用NTP进行事件同步_Python_Ntp - Fatal编程技术网

Python 使用NTP进行事件同步

Python 使用NTP进行事件同步,python,ntp,Python,Ntp,我想在两台(或更多)有线网络Linux机器之间同步两个事件。我可以用NTP来做这个吗 NTP似乎主要关注与时间服务器的同步,我需要两台机器相互同步。这里有一个微妙的区别。例如,如果一台机器距离时间服务器的跳数是另一台机器的一半,那么如果我尝试将两台机器直接同步,而不是将两台机器都同步到时间服务器,我可能能够获得更好的同步 一个稍微不同的问题:如果我使用NTP,安排活动的最佳方式是什么?cronjob还是at脚本?如果我使用像这样的库,我能获得更好的(亚秒)同步吗 最后,是否有人知道任何时间同步软

我想在两台(或更多)有线网络Linux机器之间同步两个事件。我可以用NTP来做这个吗

NTP似乎主要关注与时间服务器的同步,我需要两台机器相互同步。这里有一个微妙的区别。例如,如果一台机器距离时间服务器的跳数是另一台机器的一半,那么如果我尝试将两台机器直接同步,而不是将两台机器都同步到时间服务器,我可能能够获得更好的同步

一个稍微不同的问题:如果我使用NTP,安排活动的最佳方式是什么?cronjob还是at脚本?如果我使用像这样的库,我能获得更好的(亚秒)同步吗

最后,是否有人知道任何时间同步软件包适用于同步两台(或更多)机器,而不一定同步到时间服务器


谢谢您的帮助。

您可以尝试将一台机器委派为主机器,将其余机器委派为从机器。当同步事件发生时,主设备触发从设备开始


同步将仅受到计算机之间的延迟(ping)的限制,您不必担心系统时钟的一致性。

主机之间的ping延迟变化是什么?协调过程之间的开始时间差异对您来说合适吗?我们将如何启动流程?Cron非常不精确,还需要考虑进程的启动时间

如果对不同主机的ping时间差异很大,我会这样做

  • 在事件发生前几分钟,使用可靠的公共NTP服务器同步所有协调主机上的时钟。然而,由于事件频繁,每天3-4次同步应该足够了

  • 使用低精度调度程序,如
    cron
    ,提前2-3分钟启动一个简单的包装器外壳脚本,该脚本将
    等待()
    ,直到事件发生前15秒。然后,包装器脚本以高于正常优先级的优先级启动tagert应用程序

  • 应用程序加载(磁盘访问和动态链接速度较慢),读取所需的任何数据文件,进行所有耗时的计算等。然后使用
    usleep()
    ftime()
    gettimeofday()
    ,以亚秒精度等待开始时刻,放在
    firelastersatthemon()之前
    或者你的目标行动是什么


显然,同步如此精确的自然不精确的动作(如网络通信)毫无意义。如果您的网络具有可预测的延迟,您只需使用
ping
的往返时间进行测量,并在一台主机上创建一个主进程,在考虑延迟的情况下,通过ssh向其他主机发送start命令。

所以只需将其中一台作为ntp服务器即可?您不一定需要ntp。如果您的目标只是获得同步执行,那么您只需要一个主节点来告诉其他节点何时开始处理。然后,系统时钟不会影响执行同步。