Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.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
django runserver,跳过/缓存?同时执行多个时的请求_Django_Python 3.x_Multithreading - Fatal编程技术网

django runserver,跳过/缓存?同时执行多个时的请求

django runserver,跳过/缓存?同时执行多个时的请求,django,python-3.x,multithreading,Django,Python 3.x,Multithreading,当运行django admin runserver并同时执行多个PATCH请求时,我会看到所有请求的日志,但调试时只执行一个 使用django admin runserver--nothreading时,问题消失了 我使用的是Pycharm调试器,可能是因为runserver默认使用的是多线程,所以当两个请求同时出现时,会创建第二个线程,Pycharm不会看到/调试该线程。这就是为什么我不能调试它,但我看到了日志 但第二件事是,只有一个请求通过补丁更新成功,我知道django admin run

当运行django admin runserver并同时执行多个PATCH请求时,我会看到所有请求的日志,但调试时只执行一个

使用django admin runserver--nothreading时,问题消失了

我使用的是Pycharm调试器,可能是因为runserver默认使用的是多线程,所以当两个请求同时出现时,会创建第二个线程,Pycharm不会看到/调试该线程。这就是为什么我不能调试它,但我看到了日志

但第二件事是,只有一个请求通过补丁更新成功,我知道django admin runserver不是用于生产的,但是否存在任何数据竞争条件?我曾尝试使用django.db.transaction.atomic,但没有做任何更改

<>强>我最初的结论是如果我们考虑数据库更新,RunServer不是线程保存,所以如果测试多个更新请求——应该使用NothRead标志。< /强> < /P> 如果您能在这里提供帮助/解释,我将不胜感激

最好的, 伊戈尔

港口保安局;不要编写任何代码,因为我认为它在这里没有任何帮助:

transaction.atomic()。它不会停止不同的线程/进程同时修改相同的行。要做到这一点,您应该研究锁定或锁定

当您使用诸如
gunicorn
mod_wsgi
之类的工具部署Django时,通常会有多个工作线程/线程。因此,如果您在开发中使用
--nothreading
,您就隐藏了生产中可能出现的问题。

Hi@Alasdair,您是对的--nothreading只是隐藏了问题,我已经修改了代码,使用select\u进行更新,谢谢。如果你想修改你的评论来回答,你解决了我的问题。