Как структурировать веб-сервис Python с помощью API и веб-интерфейса? - PullRequest
0 голосов
/ 06 января 2011

Хорошей практикой является разделение вашего API и веб-сайта, ориентированного на пользователя, поэтому я ищу несколько советов о том, как структурировать компоновку модуля / субмодуля для проекта Python, который имеет одновременную разработку API и интерфейсную разработку. *

При текущем развертывании у нас есть два разных компьютера: один - веб-служба, использующая API, а другой - веб-приложение.

Один из способов решения этой проблемы - создать минимальный базовый супер-проект, который инициализирует конфигурации, управляет выполнением тестирования, запуском приложений, демонизацией и т. Д.

Затем злоупотребление подмодулями Git , отделяющее веб-приложение от подмодуля API, который может разрабатываться одновременно.

Таким образом, может быть управление версиями для API (определенной версии фиксации), а также развертывание веб-приложений, которые не мешают друг другу, пока обеспечивается обратная совместимость.

Несколько минусов при таком подходе:

  1. Это связано с Git
  2. Для внесения изменений в API по-прежнему требуется перезапуск веб-приложения (но это имеет место для любой службы, построенной вокруг API)
  3. Подмодули git могут быть слишком сложными и трудными для понимания новыми людьми (не уверен насчёт этого)

Как только у нас будет достаточно пропускной способности, мы можем использовать что-то вроде zc.buildout, чтобы использовать систему сборки для развертывания.

Еще одно решение - это сразу же использовать zc.buildout, иметь один главный репозиторий и просто создавать файлы выпуска python.

Мысли

1 Ответ

1 голос
/ 06 января 2011

Я бы определенно оставил их как разные репозитории.Супер-модуль зависит от вас.Отсутствие их в качестве подмодулей не мешает вам делать теги в обоих репозиториях, чтобы вы могли синхронизировать вещи для разных выпусков.Ваша точка зрения о чрезмерной сложности подмодулей верна, и если вы это сделаете, я бы подумал об этом только как о способе синхронизации определенных выпусков.Я думаю, что подмодули предназначены для добавления удаленных библиотек в другой проект, где вам действительно нужно использовать эти подмодули, но их разрабатывают другие люди.

...