Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/358.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 Django autoreload可根据每个请求进行开发?_Python_Django - Fatal编程技术网

Python Django autoreload可根据每个请求进行开发?

Python Django autoreload可根据每个请求进行开发?,python,django,Python,Django,Django应用程序是否可以在每次请求时重新加载 这对发展非常有用。 他就是这样做的 runserver会重新加载,但加载速度很慢,而且有时仍然会 你必须停下来再重新启动,才能看到一些变化。 (例如管理中的更改。) mod_wsgi可以通过触摸*.wsgi文件在Linux上自动加载。 在Windows上,必须使用观察者/重新加载程序脚本,再次 速度很慢 我没有试过mod_python或fastcgi,他们能做到吗 这背后的原因是当您想要更改脚本时 更改将立即显示。当然,重新加载会很慢,它必须重新

Django应用程序是否可以在每次请求时重新加载

这对发展非常有用。 他就是这样做的

  • runserver会重新加载,但加载速度很慢,而且有时仍然会 你必须停下来再重新启动,才能看到一些变化。 (例如管理中的更改。)
  • mod_wsgi可以通过触摸*.wsgi文件在Linux上自动加载。 在Windows上,必须使用观察者/重新加载程序脚本,再次 速度很慢
  • 我没有试过mod_python或fastcgi,他们能做到吗
  • 这背后的原因是当您想要更改脚本时
    更改将立即显示。

    当然,重新加载会很慢,它必须重新加载所有应用程序代码,而不仅仅是一个文件。Django不是PHP,所以不要期望它也能工作

    如果您真的希望Django在每个请求上都重新加载,那么使用CGI和CGI/WSGI桥。尽管CGI本身增加了额外的开销,但它仍然会很慢

    使用代码监视器的Apache/mod_wsgi方法是最好的折衷方案,在使用UNIX或Windows时,该方法适用于守护程序模式。也就是说,它每秒检查一次作为正在更改的应用程序一部分的任何代码文件,然后才重新启动进程。运行服务器本身也从内存中使用这种1秒轮询方法

    使用这种轮询方法确实会引入一个1秒的窗口,您可以在检测到代码重新加载要求之前发出请求。不过,大多数人从保存文件到在浏览器中重新加载文件的过程并不是那么快,所以不会注意到

    在Apache/mod_wsgi 3.0中,有一些机制允许实现一个替代的代码重新加载程序,通过能够在请求开始时安排对修改代码的检查来消除该窗口,但这将影响每个请求的性能。对于轮询方法,它在后台运行,因此通常不会对请求造成任何性能影响

    即使在具有当前版本的Apache/mod_wsgi中,您也可以通过使用嵌入式模式并将Apache MaxRequestsPerChild设置为1来执行相同的操作,但这也会影响服务静态文件的性能


    简言之,尝试在每个请求上强制重新加载并不是最好的方法,而且肯定不会消除使用Django等胖Python web应用程序所导致的加载延迟。

    /manage.py runfcgi
    也支持maxrequests参数,可以将该参数设置为1以强制重新加载。