python - 确保联系表单电子邮件不会丢失(python)

标签 python email race-condition data-formats

我有一个带有联系表的网站。用户提交姓名、电子邮件和消息,网站将详细信息通过电子邮件发送给我。

我的服务器偶尔会出现电子邮件系统问题,因此用户会收到错误消息,并且这些联系方式会丢失。 (不要说:得到一个更好的服务器,任何服务器都可以让电子邮件不时出现故障,我们确实收到了很多提交)。

我想实现一个系统,如果邮件发送函数返回错误代码,该系统可以存储用户的详细信息。然后在每次进一步提交时,检查是否有任何存储的提交并尝试将它们发送给我。

但是如何存储数据呢?

我正在使用 python,所以我考虑使用 shelve (单文件半数据库)。或者也许有人可以建议更好的数据格式? (我确实认为完整的数据库解决方案太过分了。)

我看到的单个文件方法的问题是竞争条件:同时发送两封或更多失败的电子邮件会导致对数据文件进行两次编辑,从而导致数据损坏。

那怎么办?多文件解决方案,文件锁定还是其他?

最佳答案

当我们在我们的环境中实现电子邮件发送功能时,我们以分离的方式进行。因此,例如,用户将提交他们的数据,这些数据将存储在数据库中。然后我们有一个单独的服务来运行、查询数据库并发送电子邮件。这样,如果出现任何电子邮件服务器问题,该服务将稍后重试,数据和用户信心永远不会丢失。

关于python - 确保联系表单电子邮件不会丢失(python),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/436003/

相关文章:

python - IDLE 和 Python 在 Mac OS X 中具有不同的路径

Python:当我实际上没有改变它时,为什么我的列表会改变?

php - 防止 PHP 在运行并行实例时发送多封电子邮件

PHPMailer、CC 和 Linux 服务器

multithreading - 用 gdb/lldb 模拟竞争条件是否可行?

ios - coreData executeFetchRequest 方法的竞争条件导致 nil 数据的问题

python - 在 Python 中使用变量创建类的实例

python - 是否可以检查电子邮件是否仅包含电子邮件标题中的附件?

sql - SQL Server 2005发送邮件

race-condition - 检查文件是否存在然后创建文件时如何避免竞争条件?