Django测试服务器突然无法正常工作?

时间:2011-07-26 03:32:51

标签: django port

我一直在使用Django Web框架开发webapp。我很久以前就设置了一个别名,这样当我在命令提示符下键入go-d(运行Ubuntu Linux服务器)时,它会启动命令./manage.py runserver 123.456.789.132:2222/(这里所有的虚假信息)。这个一直工作得很好,我不知道,6个月。

今晚发生了一件奇怪的事。我正在远离Putty工作,突然间我的连接被丢弃了。我检查了服务器上的日志文件,看起来来自其他国家的人试图访问Web服务器(我也在这台服务器上运行一个活动网站)。看到访问看起来如何可疑,我决定用apache2配置文件中的deny from行阻止它们。

在阻止他们的IP地址之后,我尝试使用相同的命令启动Django测试服务器。但是,现在我收到Error: That port is already in use.错误。

当我执行netstat -antwup时,它没有显示已建立或正在侦听的任何端口2222(我将其解释为端口2222 正在使用中)。

这个新的port in use问题是否与我网站上的外地不友好访问者有关?

任何帮助?

[编辑 - 更新:]好的,所以我尝试了一个有效的手册./manage.py runserver 123.456.789.123:2244(使用不同的端口)。然后我回到go-d的原始别名,它使用ORIGINAL端口(2222)并且它正在工作。我想我可以说我的问题得到了解答,但现在我很好奇发生了什么。 为什么我通常使用的端口突然被使用? Django测试服务器有时会这样做吗?

有什么想法?

谢谢!

2 个答案:

答案 0 :(得分:4)

这也是我经常遇到的问题。 如果一个程序没有正确关闭,那么套接字仍然会在端口上监听。 例如,使用Ctrl + C查询内容时。 这种情况会停留一段时间,然后端口再次释放。 只要更改端口,应该是最适合你的方式。

有办法解决这个问题,但你需要稍微玩一下django。

我曾经读过一次关于那个的事情,如果你想我可以看看我是否能再次找到它。

在纯python中检查这个的方法是。

try:
    s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR,1)
    s.bind((HOST, PORT))
except socket.error, e:
    if e....
        print "address already in use"

答案 1 :(得分:0)

仅仅以完整性的名义,我也有同样的问题,这也是数据库连接的问题,所以请检查你的设置,但在这种情况下它给了我一个服务器启动后等待一段时间后出错。