Openshift:OSError Errno 98 无法更新服务器

3 投票
3 回答
522 浏览
提问于 2025-04-17 22:09

我在用Openshift搭建Django/Python 3的服务器。昨天开始,我发现无法更新我的服务器。当我推送一个更改时,推送是成功的。我用SCP查看服务器上的文件,发现更新的文件确实存在。使用rhc git-pull也能下载到正确的文件。不过,只有模板的更改在应用中生效,Python文件的更改却没有任何效果。

当我尝试使用'rhc tail'时,出现了以下错误:

OSError: [Errno 98] Address already in use

搜索这个错误让我觉得我的应用可能有多个服务器进程在运行。我不太确定怎么进行建议的诊断,因为我不控制服务器。有什么想法吗?重启应用并没有解决问题。运行rhc stop似乎成功停止了应用,但我的网站却没有受到影响。(我之前从没尝试过停止,但我想这应该会让网站无法访问。)

3 个回答

1

我想我解决了这个问题。

我之前用的是一个旧的django项目,基于这个链接的内容:https://github.com/openshift/openshift-community-cartridge-python-3.3/blob/master/template/app.py(这个链接已经失效,我提到它只是为了提供信息)。

在这些旧的社区项目中,有一个叫做app.py的文件,用来启动CherryPy或httpd,但现在官方的django项目里已经没有这个文件了。(可以查看https://github.com/openshift/django-example

之所以app.py不再存在,是因为httpd服务现在是自动添加的。这就是我们遇到OSError: [Errno 98] Address already in use错误的原因。

把我项目里的app.py文件删掉后,问题就解决了。

我之前收到500错误是因为我的Django应用出现了问题,而不是我的Python项目有问题。这就是我当时不明白发生了什么的原因。我在我的项目里执行了find . -name *.log*命令,查看了所有的日志。

现在我的应用可以正常工作了。祝好运!

1

通过执行 'rhc app force-stop',然后再执行 'rhc app start' 解决了问题。我不知道是什么导致了这个问题,但强制停止后网站就挂掉了,重新启动后就能用新代码正常运行了。

2

今天下午我看到一个帖子,里面有人遇到了和我一样的问题。看起来是Openshift对一些东西进行了修改,但我没收到通知,真是郁闷。

可以在这里查看详细内容: Openshift三月博客帖子

@MSDOS,你的回答和我遇到的情况类似,但我想分享一个更通用的解决方案,这可能影响到大多数人。

对我来说,我只需要把app.py(我之前的wsgi入口文件)改名为wsgi.py,之后一切就正常了。现在我还得弄清楚他们对定时任务做了什么改动。

撰写回答