对不起。我以前做过python,但是在Web服务器中托管python程序是我正在学习的新事物。您的帮助将不胜感激。
我的目标是在网页中托管一个pyhton程序,以便用户可以提供一组输入。基于输入,python程序进行一些计算并向用户提供输出。整个事情在窗户上运行良好。在窗口中,我正在做的是:我运行cmd和我键入 C:\Python34\python.exe -m http.server 8020然后我运行python程序(下面提供了最重要的部分),它开始了:"在港口服务服务器启动 - 本地主机:8020"
然后从chrome I键入:http://127.0.0.1:8000,提供输入并获取输出。
我在网络服务器中具有相同的目录结构(基于 centos)。但是,我不能同时运行http.server和python程序,因为当我从同一端口运行第二个程序时,它会给出OSerror。我该如何解决这个问题?
我首先发布javascript代码,然后发布python程序。当我在网页中运行时,我从 chrome 的检查元素中收到 404 错误。
<script>
function submitReq() {
// alert("calling post");
var singleValues = $( "#single" ).val();
var payload = {};
payload["Seq"] = $("#seq").val();
payload["Mut_Seq"] = $("#mut_seq").val();
payload["Ct"] = parseInt($("#ct").val());
payload["Sodium_con"] = parseInt($("#sodium_con").val());
// alert(JSON.stringify(payload));
$.post("/getDNAsequence",
JSON.stringify(payload),
function(data,status){
var res = data.replace(new RegExp("n", 'g'), " <br/> ");
$("#output").html(res);
});
};
$("#submit").click(submitReq);
</script>
class MyServer(BaseHTTPRequestHandler):
def do_GET(self) :
if (self.path == "/"):
with open ("dna.html", "r") as myfile:
data=myfile.read().replace('n', 'n')
self.wfile.write(bytes(data, "utf-8"))
def do_POST(self):
if(self.path=="/getDNAsequence"):
content_len = int(self.headers.get('content-length', 0))
post_body = self.rfile.read(content_len)
parsed_json = json.loads(post_body.decode("utf-8"))
Seq = parsed_json['Seq']
Mut_Seq = parsed_json['Mut_Seq']
Ct = parsed_json['Ct']
Sodium_con = parsed_json['Sodium_con']
baal = Forward_mamapcr_primer(Seq, Mut_Seq, Ct, Sodium_con)
self.wfile.write(bytes(baal, "utf-8"))
self.send_response(200)
self.send_header("Access-Control-Allow-Origin", "*")
def main():
hostName = "localhost"
hostPort = 8020
print ("serving at port")
myServer = HTTPServer((hostName, hostPort), MyServer)
print( "Server Starts - %s:%s" % (hostName, hostPort))
try:
myServer.serve_forever()
except KeyboardInterrupt:
pass
myServer.server_close()
if __name__=='__main__':
main()
apache 服务器的 cgi-bin 使用用户提供的参数运行 python 脚本。