python - BaseHTTPServer,仅在我的变量发布后接收

标签 python python-2.7 python-3.x simplehttpserver basehttpserver

您好,我有这段代码用于我的变量发布,我希望它始终监听和接收发布请求,工作正常,但在接收到第一个变量后,脚本会运行,但不再获取发布变量。

只能运行一次,然后必须重新启动 python 脚本。

import BaseHTTPServer
import urlparse
import os

HOST_NAME = ''
PORT_NUMBER=8000

postVars = ''

class MyHandler(BaseHTTPServer.BaseHTTPRequestHandler):

    def do_POST(s):
        global postVars
        s.send_response(200)
        s.end_headers()
        varLen = int(s.headers['Content-Length'])
        postVars = s.rfile.read(varLen)
        #print postVars

server_class = BaseHTTPServer.HTTPServer
httpd = server_class((HOST_NAME, PORT_NUMBER), MyHandler)

try:
    httpd.handle_request()
except KeyboardInterrupt:
    pass

#print postVars

qs = dict( (k, v if len(v)>1 else v[0] )
           for k, v in urlparse.parse_qs(postVars).iteritems() )
#print qs

pass = qs['pass']
domain = qs['domain']
user = qs['user']

os.system("./createuser.sh %s %s %s" % (pass,user,domain))
httpd.serve_forever()

感谢大家

最佳答案

错误出现在脚本的末尾。您为变量取了一些名称,但又取了另一个名称。

改变这个

pase = qs['pass']
dominio = qs['domain']
usuario = qs['user']

os.system("./createuser.sh %s %s %s" % (pass,user,domain))
httpd.serve_forever()

为此

passwd = qs['pass']
domain = qs['domain']
username = qs['user']

os.system("./createuser.sh %s %s %s" % (passwd, username, domain))
httpd.serve_forever()

只是拼写错误:-)

关于python - BaseHTTPServer,仅在我的变量发布后接收,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29308299/

相关文章:

python - 计算 Azure 表存储中的记录数(年份 : 2017))

python - 使用 Python 范围和日历检查闰年

python - 迭代可调用列表时出现问题

python - 在 python 中使用列表理解获取完整路径名

python - 如何在 Python 中读取 XML header

python - Pyqtgraph - 如何添加轴日期时间?

python - python中的 boolean 文本搜索

python - 属性错误 : module 'tensorflow' has no attribute 'get_default_graph'

python - python中的error异常处理

html - 如何通过标签或类一次查找多个元素