Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用线程更新数据库。计时器不';我不能正确地更新它_Python_Django_Mongodb - Fatal编程技术网

Python 使用线程更新数据库。计时器不';我不能正确地更新它

Python 使用线程更新数据库。计时器不';我不能正确地更新它,python,django,mongodb,Python,Django,Mongodb,我在一个网站上工作 当用户从新设备登录到站点时,我会向用户发送验证代码 如果用户由于登录尝试失败而试图在10秒内登录,我不想重新发送新的验证代码 因此,我正在数据库中保存他试图登录的浏览器的设备id。并在10秒后调用函数清除数据库中的设备id 为此,我编写了以下代码: code = validation_code user_object.ip_validation_code = code user_object.pre_validation_devices[device_used] = code

我在一个网站上工作

当用户从新设备登录到站点时,我会向用户发送验证代码

如果用户由于登录尝试失败而试图在10秒内登录,我不想重新发送新的验证代码

因此,我正在数据库中保存他试图登录的浏览器的设备id。并在10秒后调用函数清除数据库中的设备id

为此,我编写了以下代码:

code = validation_code
user_object.ip_validation_code = code
user_object.pre_validation_devices[device_used] = code

def clear_pre_validation_devices():
    user_object.pre_validation_devices = {}
    user_object.save()

Timer(30.0, clear_pre_validation_devices).start()
user_object.save()
在执行代码之后,我发现这并没有像我预期的那样清除字段预验证\u设备

我正在使用Django 1.6和Mongo DB,如果有任何帮助,我将不胜感激


谢谢

您可能应该只使用Mongo内置的功能。@DanielRoseman但我只想从文档中删除一个特定字段。不是整个文档。我无法使这种方法起作用。所以我找到了一个解决办法。我节省了生成验证代码的时间。我找到了用户尝试登录的时间。我发现了区别。如果差异小于30秒,我将不发送新的验证代码。您可能只需要使用Mongo内置的功能。@DanielRoseman,但我只想从文档中删除一个特定字段。不是整个文档。我无法使这种方法起作用。所以我找到了一个解决办法。我节省了生成验证代码的时间。我找到了用户尝试登录的时间。我发现了区别。如果差异小于30秒,我不会发送新的验证代码。