pc端网站做移动适配,微信微网站建设,wordpress宝典 pdf,邯郸房地产市场信息网问题是这样的#xff0c;项目在本地没什么问题#xff0c;但是部署到服务器过一阵子发现#xff0c;这个时间会在某一刻定死不变。 重启uwsgi后#xff0c;发现第一条数据更新到了目前最新时间#xff0c;过了一会儿再次发送也变了时间#xff0c;但是再过几分钟再发就会…问题是这样的项目在本地没什么问题但是部署到服务器过一阵子发现这个时间会在某一刻定死不变。 重启uwsgi后发现第一条数据更新到了目前最新时间过了一会儿再次发送也变了时间但是再过几分钟再发就会变成和上次一样的时间。
我的基类模型是这样写的
class BaseModel(db.Model): 基类模型 __abstract__ Trueid db.Column(db.Integer, primary_keyTrue, commentid主键)add_time db.Column(db.DateTime, defaultdatetime.now(), comment创建时间)upd_time db.Column(db.DateTime, defaultdatetime.now(), onupdatedatetime.now(), comment更新时间)从发送到保存都检查了一遍没有发现什么问题且检查了debian的时区和date是没问题的因为python的datetime就是基于系统时间而言去生成的。 后搜了相关资料发现也有人遇到这个坑于是记录下来。关键原因在于sqlalchemy的缓存在于传入 default和onupdate的默认值是datetime.now()该函数在模型调用时就会生成时间这块的生成会产生缓存导致时间一直停留目前推断是这样具体的原因没有排查到源码层。没追根溯源到底是哪部分造成的缓存。但是经过实际测试在第一次启动uwsgi进行启动时发布是最新的时间数据然后过了5分钟再次发送也是新的数据。但是再过10分钟再发送就和5分钟前发送的一样了。这块可以看图2 解决方案是需要将时间函数改成函数引用的方式将now的函数地址传递。这也每次sqlalchemy生成执行sql的时候将会直接执行函数引用将 datetime.now当作参数进行传递并执行。 最终将 datetime.now()改成datetime.now搞定
class BaseModel(db.Model): 基类模型 __abstract__ Trueid db.Column(db.Integer, primary_keyTrue, commentid主键)add_time db.Column(db.DateTime, defaultdatetime.now, comment创建时间)upd_time db.Column(db.DateTime, defaultdatetime.now, onupdatedatetime.now, comment更新时间)