Программа Python доступна из интернета
Я занят написанием простой программы на python, которая берет информацию из последовательного порта и отображает график для пользователя. (Это в основном счетчик энергии, подключенный к последовательному порту, и программа python должна отображать кривые напряжения, тока и мощности.)
Однако мне бы очень хотелось, чтобы эта программа была доступна из Интернета (то есть: один из них - это веб-браузер на удаленном компьютере, вводит IP-адрес хост-компьютера и какой-либо порт, и вы сталкиваетесь с кривыми напряжения, тока и мощности)
Я очень новичок в Python и весь объектно-ориентированный язык программирования. Большая часть моего программирования была сделана на C# в прошлом.
Существует ли относительно простой способ "перенести" программу на Python на какую-либо форму / программу, доступную через Интернет? Возможно, используя его в сочетании с сервером Apache, работающим на хост-компьютере?
Любая помощь с этим будет высоко ценится. Даже если это просто указывает мне правильное направление.
Спасибо.
РЕДАКТИРОВАТЬ: Сейчас я играю с CGI и Apache, и я вижу, что можно выполнять.py файлы в Apache как cgi-binaries. Однако, когда я попытался выполнить мою полную программу на Python (содержащую форму Qt и множество кнопок и комбинированных окон), страница просто продолжала загружаться вечно, пока не отобразился тайм-аут сервера. Это потому, что я использую CGI, а не FastCGI? или невозможно "портировать" каркас Qt на HTML? Я должен скорее создать новую структуру GUI из кода HTML?
Спасибо.
4 ответа
Самый простой способ (без ущерба для безопасности вашего компьютера) - это для сценария python считывать последовательные данные и каждую минуту создавать пару графиков с помощью http://matplotlib.org/ и записывать их в место, где веб-сервер может найти их, например, в виде файлов PNG.
Затем вам нужно создать веб-страницу для отображения графиков. В целях безопасности лучше сделать статическую страницу, ссылающуюся на PNG-файлы, созданные вашим сценарием. Возможно, вставьте какой-нибудь javastript, чтобы страница периодически обновлялась.
И последнее, но не менее важное: вам нужен веб-сервер. Я бы предложил nginx для показа такого статического контента.
Существует множество основанных на Python сред для веб-разработки, например Django: https://www.djangoproject.com/. Вы можете просто разработать веб-сайт на Python, используя Django, и вызвать свой сценарий из одного из представлений. И вы можете развернуть свой проект Django с помощью Apache: https://docs.djangoproject.com/en/1.2/howto/deployment/modwsgi/
Самыми простыми решениями, похоже, являются CGI http://docs.python.org/library/cgi.html и WSGI http://docs.python.org/library/wsgiref.html
Однако в обоих случаях я напоминаю вам, что веб-приложения известны своими проблемами безопасности. Когда вы новичок, вы обычно открываете много дыр в безопасности, даже не замечая этого... но плохие парни в Интернете заметят. Я предлагаю хотя бы защитить страницу с помощью имени пользователя / пароля.
Зачем запускать и поддерживать свой собственный веб-сервер, если вы можете запустить Python в Google App Engine. Это легко, бесплатно и почти на 100% надежно. Google заботится о веб-сервере, и вам нужно только создать приложение Python. Клиент последовательного порта может отправлять данные вашему приложению App Engine.
Вот учебник, с которого можно начать: http://aleatory.clientsideweb.net/2012/08/16/financial-charts-app-engine-tutorial-web-scraping/
Вот пример Python для отправки данных в движок приложений: http://aleatory.clientsideweb.net/2012/08/16/financial-charts-app-engine-tutorial-web-scraping/