Django测试服务器和开发服务器间歇性地检索外部资源时遇到问题

时间:2016-08-24 16:39:46

标签: django selenium networking django-dev-server

我正在研究Ubuntu 16.04上的Django应用程序,最近注意到在我的Django应用程序的测试套件中使用selenium的功能测试有时会失败(超时)。这些是先前通过的测试,并且没有更改任何代码。当发生这种情况时,看似随机的哪些测试会失败;在一次运行测试A将失败,在下一次运行测试B将失败并且A将通过。但是,似乎通常失败的是调用外部Web服务(Google Maps API调用),或者加载外部库(通过CDN加载Font Awesome或Bootstrap) - selenium将超时等待加载这些资源。

发生这种情况时,使用开发服务器(./manage.py runserver)在本地运行站点通常会比平时慢(即,某些页面的加载速度会比平常慢得多,或者无法完全加载)。

我怀疑我的计算机上的某种网络流量阻塞或减慢了Django的开发和测试服务器,就像另一个进程正在使用/尝试使用相同的端口或类似的东西。

有一次,当这个问题特别糟糕时,我意识到我正试图在同一台机器上上传一个~1GB的文件到dropbox。当我停止这个过程时,我的测试套件和开发服务器都开始运行而没有问题。另一次,我通过Google音乐管理器上传音乐文件,当我退出音乐管理器时,测试和开发服务器恢复正常。但是,我目前遇到同样的问题,我目前没有进行任何主要文件下载或上传(我知道)。

因此,假设这些不是巧合,是否会出现任何类型的繁重网络流量都会导致Django开发服务器和测试服务器出现问题,或者这是由于我的机器上的某些进程试图使用与Django服务器相同的端口/资源/东西?如何诊断/解决此类问题?

我已经搜索了SO以及其他地方以深入了解该问题,但我无法找到解决方案,部分我认为因为我不确定问题是什么或如何以搜索引擎理解的方式表达它

我尝试使用netstat工具,怀疑其他进程是在127.0.0.1:8000上运行的(对于使用runserver运行的开发服务器)和127.0.0.1:8081 (这是测试服务器似乎运行的地方),但我承认我甚至不确定我应该在那里寻找什么,或者我是否应该在那里寻找。

请原谅我的无知;我是网络问题的新手(如果这是我正在经历的),我知道我可能会以一种让退伍军人的皮肤爬行的方式谈论这个问题。如果这个问题太模糊,我会提前道歉。如果您必须进行投票,请告诉我我可以提供的其他信息,以使问题更清晰/更有用。

在我准备这篇文章的时候,这个问题已经再次自行解决,我的所有测试都通过了,但我知道它会回来,所以任何建议都会受到赞赏。谢谢!

1 个答案:

答案 0 :(得分:1)

一个可能的问题是,在开发模式下,Django服务器将store all database requests

  

在使用DEBUG运行时,记住这一点也很重要   在,Django将记住它执行的每个SQL查询。这很有用   当你正在调试时,它会快速消耗内存   生产服务器。

如果您在设置中转为DEBUG = False,是否会发生相同的行为?重启服务器会解决它吗?