2012-01-12 2 views
1

Я строю различные проекты на основе python, которые используют pip/buildout для установки зависимостей. Но мне не нравится идея о том, что кто-то удаляет проект github и вредит моим приложениям, или отключается сеть, что я не могу выполнить развертывание.Кэширование требований Python для производственных развертываний

Как другие люди решат это?

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

Что-нибудь вроде этого уже существует?

использования:

У меня есть проект, который я разворачивать на веб-сервере 1. Я добавить новые функции с удаленной зависимости, и когда я пришел, чтобы обновить на веб-сервере, PyPi вниз так Я не могу развернуть. Или, возможно, когда я приступлю к созданию нового веб-сервера, зависимость исчезнет из github или где угодно.

Как я могу это сделать, поэтому среды развертывания/dev всегда могут быть подняты независимо от того, что происходит в более широком мире?

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

Так что я ищу решение, которое будет изолировать меня от кратковременных перебоев в сети для серверов, на которых установлены зависимости, а также для защиты от удаляемых проектов.

+0

Я на самом деле работает на то, чтобы справиться с этой самой вещи. На данный момент разработка идет медленно, так как потребность не является чрезвычайно высокой.Тем не менее, на данный момент я взламывал пипс, чтобы получить такую ​​функциональность. На данный момент у меня есть это, где пип не должен запускать компиляции С. Как только я получу фактический проект для этого, который имеет больше, чем просто доказательство добавления концепции, я дам вам знать! Не должно быть более нескольких дней, что у меня будет кое-что рудиментарное на github. Если вы хотите подождать, мой github будет https://github.com/ravenac95. Ура! – ravenac95

+0

«Или, возможно, когда я прихожу, чтобы настроить новый веб-сервер, зависимость исчезла из github или где угодно»? Если он ушел, вам нужно пересмотреть свое программное обеспечение, не так ли? –

+0

@ S.Lott нет, мне нужно пересмотреть мое развертывание, которое точно соответствует этому вопросу – user1037541

ответ

0

Вы должны сохранить «ссылочную копию» проектов, от которых вы зависите.

Если кто-то удаляет проект из GitHub (и PyPi и всех зеркал и всех других сайтов в сети), то у вас есть источник и теперь его можно распространять.

+0

да, но я хочу автоматизированную систему, которая сделает это, что pip/buildout может подключиться, поэтому мне не нужно вручную самостоятельно устанавливать эти вещи самостоятельно. – user1037541

+0

Что? Я устанавливаю зависимости один раз. Люди, которые устанавливают, устанавливают вещи один раз, а затем делают обновления время от времени, когда тестирование подтверждает, что все хорошо. Я не уверен, что вы пытаетесь «автоматизировать». Можете ли вы уточнить ** с обновлением ** вопроса с примера или сценария? –

+0

Я обновил свой вопрос – user1037541

0

У меня есть те же самые требования, а также использование buildout для управления моими развертываниями. Я стараюсь не устанавливать ЛЮБОЙ из моих зависимостей в пакетах в системе; Я позволяю buildout устанавливать яйца для всех из них в мою сборку. Таким образом, если я буду зависеть от более новой версии какого-либо пакета в rev N + 1 моего проекта, а в режиме «go-live» N + 1 упадет на лицо, я смогу вернуться к N и автоматически получить зависимости пакетов, которые N работал.

Мы запускаем частный сервер для яиц и настраиваем сборку для извлечения пакетов только из этого. Содержимое сервера было инициализировано, позволяя сборке захватывать яйца из сети один раз, а затем копировать загруженные яйца.

Таким образом, обновления для каждого пакета полностью контролируются, и я могу гарантировать, что 2 последовательных сборки одного и того же моментального снимка моего кода будут строить одно и то же. Когда я хочу обновить все, я дам buildout принести самые последние версии снова, протестируйте тестовый тест, а затем скопируйте свои яйца на сервер eggbasket, чтобы перейти в режим производства.