Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/21.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
当我签出Git分支时,Django如何继续使用正确的文件?_Django_Git_Webserver - Fatal编程技术网

当我签出Git分支时,Django如何继续使用正确的文件?

当我签出Git分支时,Django如何继续使用正确的文件?,django,git,webserver,Django,Git,Webserver,当我切换Git分支时,Django和/或我的Web服务器如何保持它应该使用哪些文件 我的理解是,当我在Git中签出一个分支时,实际的文件系统被修改了。这是真的吗?如果是,Django和Web服务器如何保持我启动服务器时存在的文件 例如: 在主分支上创建views.py 我的应用程序输出: 你好,世界 在views.py(开发分支)中进行修改 新产量 谢谢光临 我知道热重新加载是一个特性,但是Django和web服务器如何避免在新分支上使用修改过的文件呢 这里的问题是,您的views.py文件

当我切换Git分支时,Django和/或我的Web服务器如何保持它应该使用哪些文件

我的理解是,当我在Git中签出一个分支时,实际的文件系统被修改了。这是真的吗?如果是,Django和Web服务器如何保持我启动服务器时存在的文件

例如:


在主分支上创建views.py 我的应用程序输出: 你好,世界

在views.py(开发分支)中进行修改 新产量 谢谢光临



我知道热重新加载是一个特性,但是Django和web服务器如何避免在新分支上使用修改过的文件呢

这里的问题是,您的views.py文件在第一次导入模块时只被读取一次。此后,Python将不再查看磁盘上的文件,因此您的更改将不会产生任何影响。

更一般地说,任何web服务器都应该有一种定义良好的方式来更新其内容。除非它被明确设计为在底层文件系统更改时进行自我更新,否则您不应该期望它在这种情况下工作

具体来说,Python将要发生的事情是,在导入模块时,代码将从文件系统加载一次,然后再也不接触。因此,如果在Python进程运行时更新文件系统,那么已经导入的模块将使用旧代码,而新导入的模块将使用新代码。(有关Python缓存模块的更多详细信息,请参阅。)

出于开发目的,通常使用web服务器,当它检测到文件系统的更改时,会自动重新启动。Django的开发服务器就是这样做的。然而,这很难做到完美,因为web服务器不一定能找出代码可能依赖的每个文件。简单地重新启动并不总是合适的,因为这样会关闭现有的TCP连接


由于这种复杂性,生产部署的工作方式通常不同。它可能涉及显式关闭和重新启动,或者可能涉及在等待关闭旧服务器上的连接时使用新代码启动新服务器。在任何情况下,这将取决于web服务器的具体使用方式。

您是在服务器端更改文件,还是仅在存储库中更改文件?您所说的“在服务器端”是什么意思?我对web应用部署相对较新。我猜我不应该直接从Git repo运行服务器?通常使用存储库将代码部署到服务器。因此,您可以在其他机器上签入代码,然后安排一个稍后将签出更改的部署。好的。这就是我努力的方向。我有两台服务器。一是生产。但是我对Git分支有了更多的了解,我遇到了这样一个场景:我在生产服务器上的一个修补程序Git分支上。我做了更改,创建了一个diff,但很好奇为什么底层文件系统没有导致网站更改。有没有一种机制,当服务器启动时,Django“冻结”它看到的内容?还是在某处收集?我也一直想深入研究织物。很抱歉这篇文章。如果你做了一个提交,这个提交通常不会在另一台服务器上进行,除非你指示机器这样做。因此,可能通过重新启动服务器,您触发了一个git pull。
return HttpResponse("<h1>Hello world!</h1>")
daphne -b 0.0.0.0 -p 9000 my_app.asgi:application
return HttpResponse("<h1>Thanks for Visting!</h1>")
daphne -b 0.0.0.0 -p 9000 my_app.asgi:application