我注意到我的网络服务器(Amazon EC2)与我之间的时间戳不匹配。数据库(运行PostgreSQL的Amazon RDS)。它们会在几秒钟后关闭。
在数据库中创建了一些带有时间戳的条目(使用SQL current_timestamp
)。服务器读取这些条目并将时间戳与其自己的时钟(使用Django timezone.now()
)进行比较,以选择比“x”分钟更新的条目。
这种不匹配会导致数据不一致。什么是让我的代码容错不同机器之间时钟不匹配的好方法。我应该删除服务器端的timezone.now()
函数,而是从数据库中读取时间戳吗?这将增加数据库访问的轻微开销,但时间戳将在多个Web服务器之间保持一致。
或者,有没有更好的方法来保持2台机器的同步?
答案 0 :(得分:1)
我不认为如果您使用RDS可以做很多事情,所以我会采用数据库查询方法。也许你遇到同样的bug?
答案 1 :(得分:1)
几秒钟的不匹配太多了。您是否在服务器上使用NTP将时钟同步到某个参考服务器?我假设Amazon RDS确实保持时钟同步,所以我怀疑你可以通过NTP在你的EC2实例上做些什么来减少偏差。