2

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

./manage.py runserver发生这种情况时,使用开发服务器(

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

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

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

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

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

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

在我花时间准备这篇文章的过程中,问题再次自行解决,我所有的测试都通过了,但我知道它会回来,所以任何建议都将不胜感激。谢谢!

4

1 回答 1

1

一个可能的问题是,处于开发模式的 Django 服务器将存储所有数据库请求

同样重要的是要记住,当打开 DEBUG 运行时,Django 会记住它执行的每个 SQL 查询。这在您调试时很有用,但它会迅速消耗生产服务器上的内存。

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

于 2016-08-24T16:50:16.843 回答