BaseHTTPServer,只接收一次我的变量

2024-09-27 07:28:36 发布

您现在位置:Python中文网/ 问答频道 /正文

嗨,我有我的变量后,我希望这总是监听和接收后的请求,工作正常,但在收到第一个变量后,按照脚本运行,但不再得到后变量的代码。你知道吗

只能正常工作一次,然后必须重新启动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()

谢谢大家


Tags: nameimport脚本hostosdomainpassclass
2条回答

错误在脚本末尾。你给vars取了个名字,但换了一个。你知道吗

改变这个

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()

只是输入错误:-)

如果调用serve_forever,则无法在此线程中执行任何操作。在另一个线程或循环中执行任务并调用handle_request。你知道吗

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)

while True:
    try:
        httpd.handle_request()
    except KeyboardInterrupt:
        pass
    qs = dict( (k, v if len(v)>1 else v[0] )
           for k, v in urlparse.parse_qs(postVars).iteritems() )
    pass = qs['pass']
    domain = qs['domain']
    user = qs['user']

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

相关问题 更多 >

    热门问题