Можно ли обслуживать динамическое (со статическими файлами) веб-приложение на python как один пакет без других зависимостей? - PullRequest
2 голосов
/ 21 ноября 2011

Допустим, у вас есть друг, который знает, как набрать python run.py в соответствии с вашими инструкциями (или дважды щелкнуть по нему). Это оно. Друг не знает, что такое apache или nginx, но ему необходимо серверное веб-приложение для обмена фильмами / музыкой со мной и другими друзьями.

Теперь вы хотите создать пакет, содержащий ваши скрипты, которые будут прослушивать: 8080 и обслуживать симпатичное веб-приложение, используя cherrypy для создания потоков, если 10 или более друзей одновременно получат доступ к музыке / блогу / чему угодно. А приложение настолько простое, что его можно сделать в колбе. База данных представляет собой простой файл sqlite3, ничего особенного.

Можно ли это сделать в python? Не вызывая apache / nginx или файлы конфигурации или не требуя от пользователя веб-приложения (владельца веб-приложения и пользователя, а не просто помещать его на веб-хостинг где-то для «производственного» использования, это не веб-приложение для « производство ", для использования многими на своих компьютерах), чтобы быть программистом или сотрудником по развертыванию.

Спасибо. «

EDIT

Я пошел с cherrypy, только одним runit.py, который запустил многопоточный сервер cherrypy со статической передачей файлов. Но затем у меня возникли проблемы с ведением журнала, как из-за нескольких приложений, так и из-за собственного механизма ведения журнала cherrypys, в основном документация отстой.

Так что теперь я делаю это с Gunicorn. Веб-приложение и runit.py, который обслуживает его с gunicorn и gevent. Это хорошо ...

Ответы [ 3 ]

0 голосов
/ 27 ноября 2011

Возможно, вы захотите попробовать PyInstaller . Убедитесь, что вы используете CherryPy 3. Если у вас возникли проблемы с приложением, работающим на Flask 0.8, попробуйте версию 0.7.

0 голосов
/ 28 ноября 2011

Если предположить, что вы можете заставить своих друзей установить python на их компьютер, не могли бы вы просто создать zip-файл со своим собственным кодом и связанными с ним зависимостями, подобно тому, как virtualenv изолирует зависимости вашего проекта от глобальных? 1001 *

Если вы используете встроенный dev-сервер, это будет так же просто, как двойной щелчок по файлу python для загрузки веб-сервера.

0 голосов
/ 21 ноября 2011

Пока ваш пользователь знает, как загружать вещи из Интернета, а также может набирать "python setup.py install", я не уверен, какие другие препятствия вы предвидите. В Windows это может быть еще проще, если вы упакуете свой код, используя python setup.py bdist_wininst. Смотри http://docs.python.org/distutils/builtdist.html#creating-windows-installers

...