我有一个联系表格的网站.用户提交姓名,电子邮件和消息,该网站通过电子邮件向我发送详细信息.
有时我的服务器的电子邮件系统有问题,因此用户收到错误,这些联系人详细信息丢失了.(不要说:获得更好的服务器,任何服务器都可以随时关闭电子邮件,我们会收到很多提交的内容).
如果邮件发送功能返回错误代码,我想实现一个可以存储用户详细信息的系统.然后在每次进一步提交时,检查任何存储的提交并尝试将它们发送给我.
但是如何存储数据呢?
我正在使用python,所以我想到使用shelve(单文件半数据库).或者也许有人可以提出更好的数据格式?(我认为完整的数据库解决方案会有点过分.)
我用单一文件方法看到的问题是竞争条件:同时发生两个或多个失败的电子邮件会导致对数据文件进行两次编辑,从而导致数据损坏.
那么该怎么办?多文件解决方案,文件锁定或其他什么?
当我们在环境中实现电子邮件发送功能时,我们以分离的方式进行.因此,例如,用户将提交将存储在数据库中的数据.然后我们有一个单独的服务运行,查询数据库并发送电子邮件.这样,如果有任何电子邮件服务器问题,该服务将稍后再试,数据和用户信心永远不会丢失.