Как получить автоматический отчет и сохранить его в базе данных? - PullRequest
0 голосов
/ 19 марта 2010

У меня есть веб-сервер, который будет принимать скрипты на Python, PHP или Perl. Я не знаю много о каком-либо из этих языков, но из трех Python кажется наименее страшным. У него настроена база данных MySql, и я знаю достаточно SQL, чтобы управлять им и писать запросы для него.

У меня также есть программа, в которую я хочу добавить автоматический отчет об ошибках. Что-то идет не так, он отправляет сообщение об ошибке на мой сервер.

Что я не знаю, как это сделать, так это написать скрипт Python, который будет размещен на веб-сервере и, когда моя программа отправит отчет об ошибке, сделать следующее:

  • Получить отчет об ошибке.
  • Разбейте его на разделы.
  • Вставьте его в базу данных.
  • Пусть сервер отправит мне электронное письмо.

Из того, что я мало понимаю, кажется, что это не должно быть слишком сложно, если я только знаю, что делаю. Может кто-нибудь указать мне на сайт, который объясняет основные принципы, которые мне понадобятся для создания сценария, подобного этому?

Ответы [ 2 ]

0 голосов
/ 19 марта 2010

С Python это зависит от вашего веб-хостинга. Некоторые общие веб-хосты работают на PHP, а затем делают только Perl / Python (и Ruby и т. Д.) Через CGI. С помощью Python вы можете создавать веб-материалы либо с использованием модели CGI, либо - если у вас есть хостинг, который поддерживает его - WSGI. Если вы собираетесь использовать Python и CGI, просто посмотрите документацию для модуля cgi. Или используйте web.py . В основном вам нужно читать входные данные как сообщение HTTP POST для определенного URI. В документации web.py должно быть описано, как это написать.

Для анализа - зависит от того, в каком формате он отправляется. Вы можете использовать x-www-form-encoded для передачи простых пар ключ-значение. Я не знаю тонкостей web.py (я в основном использую Ruby), но в основном он должен предоставить вам способ получить объект 'request', что-то с ним сделать, а затем вы модифицируете объект 'return', который содержит что восходит к браузеру. Для web.py это web.input () - см. здесь .

Для чего-то более сложного вам нужно в основном размещать данные в выбранном вами формате - XML, JSON, магический двоичный формат двоичных объектов. Как вы анализируете, зависит от того, что это такое. Просто Google для "Python XML" или "Python JSON" или что-то еще, и вы найдете последнюю библиотеку для него.

Вставка в базу данных - используйте библиотеку mysqldb для Python (я использую Postgres, в основном из Ruby и Java, так что я не совсем в курсе последних библиотек Python MySQL).

Для отправки электронной почты вы можете либо просто использовать sendmail (в системах Unix с установкой sendmail), либо использовать smtplib из Python для отправки его на SMTP-сервер - если вы просто делаете электронную почту администратора, используйте что-нибудь как учетная запись Gmail в качестве вашего SMTP-сервера, поскольку вы знаете, что он будет работать. О, web.py делает это проще - он имеет встроенный почтовый модуль . Используйте это, я думаю.

Возможно, вам нужно подумать о безопасности - это означает аутентификацию и проверку формы. RTFM для любого языка и библиотеки базы данных, которую вы используете, чтобы вы не открывали себя для SQL-инъекций - и делайте то же самое для электронной почты. Вы не хотите быть прокси для спама.

0 голосов
/ 19 марта 2010

Я не знаю Python, поэтому я показываю вам php.

Итак, если ваша ошибка отправляет код сообщения на file.php?report=report+is+here

Следующее будет работать.

<?

 # code to initialize the database here
 $rc = mysql_connect(...);

 if (!$rc)
 {
  die ("Could not connect to the database.");
 }

 // probably should do some error checking in a try .. catch
 mysql_execute("
                 INSERT INTO BugTable(report) 
                 VALUES('".addslashes($_REQUEST['report'])."')");

 mail("youremail@set.com","Bug Report Recieved", "Recieved the following bug report: {$_REQUEST['report']}");

 ?>

Все о php находится на php.net.

...