【问题标题】:Python ThreadedTCPServer: "Name or service not known"Python ThreadedTCPServer:“名称或服务未知”
【发布时间】:2014-04-10 17:11:28
【问题描述】:

我正在开发一个 ThreadedTCPServer 来与同样驻留在同一台机器上的 PHP 应用程序进行通信。这假设接收来自这个 PHP 应用程序的请求并使用 ffmpeg 在本地转换一些视频。

代码如下:

# -*- coding: utf-8 -*- 
import os
import socket
import threading
import logging.config
import SocketServer, time
from queuev2 import QueueServer

logging.basicConfig(format='[%(asctime)s.%(msecs).03d] %(message)s', datefmt='%Y-%m-%d %H:%M:%S', filename=os.path.join(os.path.dirname(os.path.realpath(__file__)), 'converter.log'), level=logging.INFO)

class ThreadedTCPRequestHandler(SocketServer.BaseRequestHandler):

    def handle(self):
        data = self.request.recv(1024)
        cur_thread = threading.current_thread()
        response = "{}: {}".format(cur_thread.name, data)
        videoPool.add(data)
        print "Output! %s" % data
        self.request.sendall(response)

class ThreadedTCPServer(SocketServer.ThreadingMixIn, SocketServer.TCPServer):
    pass

if __name__ == "__main__":

    logging.info("Initializing...")
    videoPool = QueueServer()
    HOST, PORT = "localhost", 6666

    server = ThreadedTCPServer((HOST, PORT), ThreadedTCPRequestHandler)
    ip, port = server.server_address

    # Start a thread with the server -- that thread will then start one
    # more thread for each request
    server_thread = threading.Thread(target=server.serve_forever)

    # Exit the server thread when the main thread terminates
    server_thread.daemon = True
    server_thread.start()

    print("Server loop running in thread: %s" % server_thread.name)

    # "Groundhog day" time
    while True:
        time.sleep(999)
        pass

    #server.shutdown()

这在我的开发笔记本电脑上运行良好,但在服务器上我收到以下错误:

Traceback (most recent call last):
  File "server.py", line 31, in <module>
    server = ThreadedTCPServer((HOST, PORT), ThreadedTCPRequestHandler)
  File "/usr/lib/python2.7/SocketServer.py", line 408, in __init__
    self.server_bind()
  File "/usr/lib/python2.7/SocketServer.py", line 419, in server_bind
    self.socket.bind(self.server_address)
  File "/usr/lib/python2.7/socket.py", line 224, in meth
    return getattr(self._sock,name)(*args)
socket.gaierror: [Errno -2] Name or service not known

我猜这与我正在使用的端口(6666)有关,但我尝试了其他端口,但它没有工作。 Unix 域套接字在这里有用吗?可以举个例子吗?

【问题讨论】:

    标签: python sockets tcp ffmpeg daemon


    【解决方案1】:

    确实是端口问题。 Unix Domain Sockets 做到了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-11-10
      • 2019-12-05
      • 2013-08-08
      • 2016-01-06
      • 2019-07-07
      • 1970-01-01
      • 2018-06-02
      • 2013-07-01
      相关资源
      最近更新 更多