- 之前项目在 windows 中部署,用的 apscheduler 做定时,初始化是放在 urls.py 中导入定时任务,任务中用到了 django 的 orm,不会出现数据库连接丢失情况
- 现在项目迁移到了 linux,使用 supervisor + gunicorn + django,因为定时任务初始化有用到 django,所以不能放在 urls.py 中导入定时任务,放到了 wsgi.py 中末行导入,定时任务第二天执行时会出现 django 的 ORM 数据库连接丢失,我在定时任务启动前用了 close_old_connections()方法手动刷新连接,可以解决。
问题:windows 中定时任务是在加载 wsgi.py 之前 导入的,linux 中是在 wsgi.py 加载之后导入的,但是理论上定时任务都是在 django 的会话中的,不应该会存在数据库丢失情况啊!