当我尝试在 ubuntu 机器中的collectd servcie中启动python服务器时出现错误?

当我尝试在 ubuntu 机器中的collectd servcie中启动python服务器时出现错误?

我在我的 ubuntu 机器上安装了collectd。默认安装 Python 服务器。我需要使用collectd 将所有系统指标推送到浏览器。为此我需要运行 python 服务器。但是当我尝试运行时出现错误。

请帮我。

下面是我的代码

#!/usr/bin/env python

import CGIHTTPServer
import BaseHTTPServer
from optparse import OptionParser

class Handler(CGIHTTPServer.CGIHTTPRequestHandler):
    cgi_directories = ["/cgi-bin"]

PORT = 8888

def main():
    parser = OptionParser()
    opts, args = parser.parse_args()
    if args:
        httpd = BaseHTTPServer.HTTPServer((args[0], int(args[1])), Handler)
        print "Collectd-web server running at http://%s:%s/" % (args[0], args[1])
    else:
        httpd = BaseHTTPServer.HTTPServer(("127.0.0.1", PORT), Handler)
        print "Collectd-web server running at http://%s:%s/" % ("0.0.0.0", PORT)
    httpd.serve_forever()

if __name__ == "__main__":
    main()

当我运行命令时python runserver.py

我得到的输出像

Traceback (most recent call last):
  File "runserver.py", line 24, in <module>
    main()
  File "runserver.py", line 19, in main
    httpd = BaseHTTPServer.HTTPServer(("127.0.0.1", PORT), Handler)
  File "/usr/lib/python2.7/SocketServer.py", line 417, in __init__
    self.server_bind()
  File "/usr/lib/python2.7/BaseHTTPServer.py", line 108, in server_bind
    SocketServer.TCPServer.server_bind(self)
  File "/usr/lib/python2.7/SocketServer.py", line 431, in server_bind
    self.socket.bind(self.server_address)
  File "/usr/lib/python2.7/socket.py", line 228, in meth
    return getattr(self._sock,name)(*args)
socket.error: [Errno 98] Address already in use
[1]+  Exit 127                runserver.py

答案1

从错误中可以清楚地看到Address already in use。这意味着您已经有一些其他程序正在侦听指定的接口/端口。

确保没有其他程序正在侦听您的端口 (8888)。你可以这样做:

netstat -plnt | grep 8888

并停止该过程。

否则更改端口号。另请注意,为了使用 < 1024 的端口号,您需要 root 权限。对于> 1024 的端口,您不需要它。

相关内容