2012-01-12 4 views
1

pip/buildout을 사용하여 종속성을 설치하는 다양한 python 기반 프로젝트를 빌드하고 있습니다. 하지만 github 프로젝트를 삭제하고 내 앱을 못쓰게하는 아이디어 나 배포를 수행 할 수없는 네트워크 중단이라는 생각이 맘에 들지 않습니다.프로덕션 배포를위한 파이썬 요구 사항 캐싱

다른 사람들이 어떻게 이것을 해결합니까?

나는 다양한 아이디어를 가지고 있지만 아마도 가장 유망한 것으로 생각되는 것은 프록시 서버 캐싱 일 것이라고 생각합니다. 캐시 된 버전을 제공하기 전에 다운로드 한 프로젝트의 복사본을 캐시하고 주기적으로 업데이트를 확인합니다 (인터넷 연결이있는 경우).

이와 비슷한 항목이 이미 있습니까?

사용 사례 : 나는 생산 웹 서버에 업데이트 할 올 때

은 내가 웹 서버 1. I 원격 의존성에 새로운 기능을 추가하고,에 배포 프로젝트를 가지고, PyPi 때문에 다운 나는 배치 할 수 없다. 또는 새로운 웹 서버를 설치할 때 종속성이 github 또는 어디에서나 사라졌습니다.

더 넓은 세상에서 일어나는 일과 관계없이 언제든지 내 배포/dev 환경을 늘릴 수 있습니까?

또한 배포 할 때 기존 코드의 맨 위에 배포하지 않겠습니다. 오히려 나는 새로운 virtualenv를 만들고 그것으로 넘어서서 어떤 일이 잘못되면 롤백 할 수 있습니다. 따라서 배포 할 때마다 환경을 재 구축해야하며 종속성이 필요합니다.

그래서 내가 의존성을 호스팅하는 서버에 대한 단기 네트워크 중단에 대비하고 삭제되는 프로젝트에 대한 경계를 방지 할 수있는 솔루션을 찾고 있습니다.

+0

가 난 사실이 매우 일을 처리하기 위해 뭔가 일하고 있어요. 필요성이 극단적으로 높지 않기 때문에 현재 개발이 느립니다.그러나, 순간 나는 pip의 주위에이 기능을 작동하기 위하여 해킹하고있다. 현재 pip에 C 컴파일을 실행할 필요가없는 곳이 있습니다. 일단 개념 추가를 증명하는 것 이상의 의미를 가진 실제 프로젝트가 나오면 알려 드리겠습니다. 내가 github에 관해 기초가없는 무엇인가 가질 것 인 것은 2,3 일 이상이어야하지 않는다. 그것을 기다리고 싶다면 내 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에있는 일부 패키지의 최신 버전과 N + 1의 "Go-Live"시간에 의존하면 N으로 롤백하여 자동으로 packge 종속성을 얻을 수 있습니다. N은 함께 일했다.

우리는 개인 eggbasket 서버를 실행하고 buildout을 구성하여 패키지를 가져옵니다. 빌드 아웃이 네트워크에서 알을 한 번 수집 한 다음 다운로드 한 알을 복사하여 서버 내용을 초기화했습니다.

이렇게하면 각 패키지의 업그레이드가 완전히 통제되며 코드의 동일한 스냅 샷을 연속적으로 두 번 빌드하면 동일한 것을 빌드 할 수 있습니다. 모든 것을 업그레이드하고 싶다면 buildout이 최신 버전을 다시 가져오고 테스트 테스트를 테스트 한 다음 달걀을 eggbasket 서버에 복사하여 생산 모드로 들어 가게 할 것입니다.