Python服务器挂起

时间:2018-03-27 14:34:02

标签: python simplehttpserver

我遇到python 3.6 HTTPServer的问题

当浏览器发送请求时,一切都很好。当我通过PostMan发送请求时,请求完成(代码200),但请求失败。如果我再次通过邮递员对服务器执行ping操作,则所有挂起的操作都将完成,然后它们将继续失败。

这是向服务器发送请求的JS

jQuery.post("http://<?php echo $_SERVER['SERVER_ADDR']?>:8081", JSON.stringify({
    auth: "security_token",
    user_id: <?php echo $_SESSION[CLIENT_LOGGED] ?>
})

这就是服务器处理请求的方式

def do_POST(self):

    contentLen = int(self.headers['content-length'])
    postBody = self.rfile.read(contentLen)

    try:
        data = json.loads(postBody.decode('utf-8'))
    except ValueError:
        self.handeValueError()
        return 

    self.processRequest(data)

    return

def processRequest(self, data):
    if (data["auth"] == self.centralKey):
        self.processCentral(data)
    elif (data["auth"] == self.clientKey):
        self.processClient(data)
    else:
        self._set_badAuth()

def processCentral(self, inputData):
    self._set_validMethod()

    phone = standartizePhone(inputData["caller"])

    if(inputData["ringing"] == "1"):

        result = getCallerInfo(phone)

        if (len(result) == 0):
            temp = CallerData(phone, -1, 0)
            self.callerInfo[inputData["internal"]].append(temp)

        for row in result:
            if (row[2] == 0):
                temp = CallerData(phone, row[0], row[1], 1)
            else:
                temp = CallerData(phone, row[0], row[1], 1, row[2], row[3], row[4], row[5])
            self.callerInfo[inputData["internal"]].append(temp)

    elif(inputData["ringing"] == "2"):
        for el in self.callerInfo[inputData["internal"]]:
            el.c_status = 2

    elif(inputData["ringing"] == "3"):
        caller = CallerData(phone, 0, 0)
        values = [value for value in self.callerInfo[inputData["internal"]] if value != caller]
        self.callerInfo[inputData["internal"]] = values

    else:
        message = '{"success": "false"}'
        self.wfile.write(bytes(message, "utf8"))
        return False

    message = '{"success": "true"}'
    self.wfile.write(bytes(message, "utf8"))
    return True

def processClient(self, inputData):
    self._set_validMethod()
    message = "["
    internalMsg = []
    internalNums = getUserInternal(inputData["user_id"])

    for internal in internalNums:
        for caller in self.callerInfo[str(internal[0])]:
            internalMsg.append(callerInfoToJSON(caller))

    message += ", ".join(internalMsg)
    message += "]"

    self.wfile.write(bytes(message, "utf8"))

请注意,如果我通过邮递员将请求作为中心或客户端发送,则无关紧要。它在两种方式下都会挂起。此外,没有从python脚本

记录错误

注意2将邮差更新到最新版本似乎可以解决问题

0 个答案:

没有答案