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