Форум сайта python.su
Приветствую форумчан!)
Учусь по методичке с ВУЗа осваивать python.
Написал небольшое клиент-серверное приложение (клиент-серверное это преувеличено)
В роли клиента у меня выступает html страница. А в качестве серверного приложения python файл.
Установил себе WAMp (windows apache mysql php). Настроил httpd.conf что бы поддерживал файлы .py .
Проверил Hello word.py - работает. Многие программы запускал - работают. А эта чего то выеживается и выдает 500 ошибку. Пути все указаны верно (и в конфиге и к файлу python.exe)
Вроде все правильно указал (на мое мнение). Может кто-то из мудрецов тыкнет меня в ошибку. Ну или поможет строчку как-то исправить ..)
<html> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8"> <title>test</title> <script src="jquery.min.js"></script> <script> $(function() { $('#clickme').click(function(){ var name = prompt("Write your name!"); current = this; $.ajax({ url: "http://localhost/1/lb5.py", type: "post", datatype:"application/json", data: JSON.stringify({'key':'1','ФИО':name}), success: function(response){ var testOne = response.test1; var testTwo = response.test2; var testThree = response.test3; var answerO = "<br><input type='text' size='20' id='an1'>"; var answerT = "<br><input type='text' size='20' id='an2'>"; var answerTh = "<br><input type='text' size='20' id='an3'>"; var butt = "<br><button id='chek'>проверить</button>"; $("#testOne").html(testOne+answerO); $("#testTwo").html(testTwo+answerT); $("#testThree").html(testThree+answerTh); $("#buttonST").hide(); $("#buttonP").html(butt); } }); console.log(testOne); console.log(testTwo); console.log(testThree); $("#buttonP").on( "click", function() { var an1 = $("#an1").val(); var an2 = $("#an2").val(); var an3 = $("#an3").val(); console.log(an1); console.log(an2); console.log(an3); $.ajax({ url: "http://localhost/1/lb5.py", type: "post", datatype:"application/json", data: JSON.stringify({'key':'2','an1':an1,'an2':an2,'an3':an3}), success: function(response){ alert ("error"); var user = "<p><b>User:</b> "+name+"<br>"; var rez = "<b>Rezult:</b> ["+response.rez+"]</p>"; $("#testOne").html(user+rez); $("#testTwo").html(""); $("#testThree").html(""); $("#buttonP").html(""); $("#buttonST").show(); } }); }); }); }); </script> </head> <body> <div id="placeHolder"> <div id="testOne"></div> <div id="testTwo"></div> <div id="testThree"></div> <div id="buttonP"></div> <div id="buttonST"> <button id="clickme"> Старт</button> </div> </div> </body> </html>
#!C:/Python34/python.exe import cgi import sys import json myjson = json.load(sys.stdin) sys.stdout.write("Content-Type: application/json") sys.stdout.write("\n") sys.stdout.write("\n") keyNum = int(myjson['key']) if keyNum == 1: f = open("rezult.txt",'a+') nameLs = [] nameLs.append(myjson['name']) f.writelines(nameLs) f.close() test = {} test['test1'] = "<p><h2>Вопрос №1</h2></p><p>Произвольное количество именованных аргументов в python обозначается:</p><p>1. **. 2. *. 3. ... .</p>" test['test2'] = "<p><h2>Вопрос №2</h2></p><p>Передавать в функцию параметр можно:</p><p>1. Только по ссылке. 2. Только по значению. 3. По ссылке и по значению</p>" test['test3'] = "<p><h2>Вопрос №3</h2></p><p>Самая медленная сортировка:?</p><p>1. Пузырьковая. 2. Двоичная. 3. Быстрая</p>" sys.stdout.write(json.dumps(test)) sys.stdout.write("\n") sys.stdout.close() if keyNum == 2: colbal = 0 if int(myjson['an1']) == 1: colbal = colbal + 1 if int(myjson['an2']) == 3: colbal = colbal + 1 if int(myjson['an3']) == 1: colbal = colbal + 1 rezult = {} rezult['rez'] = colbal sys.stdout.write(json.dumps(rezult)) sys.stdout.write("\n") sys.stdout.close() f = open("rezult.txt",'a+') nameLs2 = [] strSS2 = " -> Rezult:"+str(colbal)+"\n" nameLs2.append(strSS2) f.writelines(nameLs2) f.close() del nameLs2 else: nameLs = [] strSS = "\n" nameLs.append(strSS) f.writelines(nameLs) f.close() sys.stdout.write("\n") sys.stdout.close()
Офлайн
А это что?
"http://localhost/1/lb5.py"
Офлайн
FirikДиректория где лежим lb5.py (файл питона)
А это что?"http://localhost/1/lb5.py"
Офлайн
Если есть ошибка, значит где-то должен быть трейсбек этой ошибки, в логах апача, например.
Отладка программ порой занимает больше времени программиста, чем собственно написание этой программы. Вам надо учиться дебажить программы, самый простой, но не самый лучший способ - напихать в код принтов, тогда вы будете хотя бы видеть какая часть программы точно выполняется, а до какого момента программа не доходит. Следующим шагом вам надо научиться работать с инструментами разработки, в любой уважающей себя ИДЕ есть встроенный дебаггер, с помощью которого вы можете расставить точки останова или следить за состоянием переменных или выполнять программу по шагам. Да и вообще сама идея запускать скрипт сразу на апаче безблагодатна, есть множество веб-серверов предназначенных именно для разработки и отладки, например Werkzeug, что может быть надежней, чем получить трейсбек непосредственно в окно эмулятора терминала? Ну и не надо забывать, что веб-серверы сами сохраняют историю выполнения скриптов в лог-файлах. Поковырявшись в логах вы скорее всего найдете конкретное указание, в какой строке произошла ошибка и что это за ошибка.
Ну а так никто не будет за вас гадать, что же у вас не так в коде, просто так не ловят ошибки.
Отредактировано FishHook (Фев. 14, 2016 10:29:53)
Офлайн
Вот, например, дебаггер в Пайшарме
Офлайн
Я вчера только узнал о этих божественных логах.
Pycharm'ом пользуюсь. На мое мнение самая лучшая IDE на Windows для Python'а.
Ругается в логах вот на эту строчку
myjson = json.load(sys.stdin)
Как я понял это кодировка json'а который я ему передаю.
Как сделать это верно пока не понимаю.
Попытался заменить эту строчку вот этими:
result = {'success':'true','message':'The Command Completed Successfully'}; myjson = json.load(sys.stdin) print ('Content-Type: application/json\n\n') myjson.dump(result, sys.stdout)
Офлайн
ivladden
Дорогой друг, вы до сих пор не показали вывод ошибки.
Интерпретатор на чем то спотыкается, и он об этом буквально орёт в логи.
Так покажите нам, о чем он орёт.
Ошибка в питоне выглядит вот так
здесь есть номер строки, в которой произошла ошибка, есть класс исключения, есть детализация этого исключения. В вашей программе случается какая-то такая же ошибка, вашу программу выполняет такой-же интерпретатор, покажите же нам ошибку.
Отредактировано FishHook (Фев. 14, 2016 14:38:31)
Офлайн
В том то и дело что ошибки нету.
Запускаю я файл питона своего.
И вот так он висит.
Нажимаю на стоп выдает ошибка -1
Вот лог
End of script output before headers: first.py
AH01215: Traceback (most recent call last):\r
AH01215: File “C: /wamp/www/py/first.py”, line 6, in <module>\r
AH01215: myjson = json.load(sys.stdin)\r
AH01215:
File “C: \\Python34\\lib\\json\\__init__.py”, line 268, in load\r
AH01215: parse_constant=parse_constant, object_pairs_hook=object_pairs_hook, **kw)\r
AH01215: File “C:\\Python34\\lib\\json\\__init__.py”, line 318, in loads\r
AH01215: return _default_decoder.decode(s)\r
AH01215: File “C:\\Python34\\lib\\json\\decoder.py”, line 343, in decode\r
AH01215: obj, end = self.raw_decode(s, idx=_w(s, 0).end())\r
AH01215: File “C:\\Python34\\lib\\json\\decoder.py”, line 361, in raw_decode\r
AH01215: raise ValueError(errmsg(“Expecting value”, s, err.value)) from None\r
AH01215: ValueError: Expecting value: line 1 column 1 (char 0)\r
C:\Users\Vladden\AppData\Local\Programs\Python\Python35-32\python.exe “C:\Program Files (x86)\JetBrains\PyCharm Community Edition 5.0.4\helpers\pydev\pydevd.py” –multiproc –qt-support –client 127.0.0.1 –port 63908 –file Cwamp/www/py/first.py
pydev debugger: process 6312 is connecting
Connected to pydev debugger (build 143.1919)
127.0.0.1 –port 63908перехожу и вижу
Отредактировано ivladden (Фев. 14, 2016 19:11:24)
Прикреплённый файлы:
2016-02-14_18-56-26.jpg (143,2 KБ)
Офлайн