【发布时间】:2012-12-05 17:22:27
【问题描述】:
我正在共享托管计划上运行一个小型 Web 应用程序。
我有一个包含无限循环的“工作函数”;循环检查数据库中的任务队列是否有新的事情要做。这需要使用 @transaction.commit_manually 来破坏 Django 的缓存并在每次迭代中获取最新信息。
我最近实现了数据库日志记录,因此需要在我的工作函数中引入使用保存点 - 这样,如果出现任何问题,我可以回滚到一个好的保存点,登录到数据库,然后继续直到我到达最终transaction.commit()
现在,与我的开发服务器不同,生产服务器给了我错误:
DatabaseError: (1305, 'SAVEPOINT s140364713719520_x1 does not exist')
指向except 块中的transaction.savepoint_rollback() 调用(参见下面的源代码)。开发服务器没有这样的问题;如果我在交互式 shell 中键入 transaction.savepoint(),生产服务器会愉快地生成保存点 ID。
This is the outline of my code,如果有帮助的话;我尽量保持简洁。
如果那里有任何仁慈的 Python 大师,请帮助我。我对此感到非常沮丧,尽管我认为我在冷静地处理它方面做得相当好。
【问题讨论】: