2012-11-08 2 views
9

AWS API로 작업하기 위해 간단한 IronWorker in Python을 작성했습니다.IronWorker에서 파이썬 의존성을 묶는 방법은 무엇입니까?

이렇게하려면 PiPy를 통해 배포되는 boto library을 사용하고 싶습니다. boto 라이브러리는 기본적으로 IronWorker 런타임 환경에 설치되지 않습니다.

보토 라이브러리 의존성을 IronWorker 코드와 함께 묶을 수있는 방법은 무엇입니까?

이상적으로 나는 내가 gem dependancy bundling available for Ruby IronWorkers과 같이 사용할 수 있습니다 바라고 있어요 - 내가 후버 라이브러리를 사용하는 것을 참조 Python Loggly sample에서

gemfile '../Gemfile', 'common', 'worker' # merges gems from common and worker groups 

를 지정 myRuby.worker에 즉 :

그러나
#here we have to include hoover library with worker. 
hoover_dir = os.path.dirname(hoover.__file__) 
shutil.copytree(hoover_dir, worker_dir + '/loggly') #copy it to worker directory 

, 원하는 후버 라이브러리 버전이나 다운로드 위치를 지정하는 곳/방법을 알 수 없습니다.

Python IronWorkers에서 타사 라이브러리를 사용하는 공식/올바른 방법은 무엇입니까?

답변

6

[편집] 우리는이 답변이 쓰여지고 받아 들여 졌기 때문에 우리의 도구 세트에 대해 조금 노력했습니다. answer from my colleague below이 앞으로 나아가는 과정입니다. [편집]

IronWorker 용 Python 클라이언트 라이브러리를 작성했습니다. 나는 또한 Iron.io에 고용되어 있습니다.

파이썬 클라이언트 라이브러리를 사용하는 경우 가장 쉬운 방법은 라이브러리의 설치된 폴더를 복사하여 패키지를 업로드 할 때 포함시키는 것입니다. Python Loggly 샘플이 위에서 수행 한 작업입니다. 당신이 말했듯이, 그것은 버전이나 라이브러리를 어디에서 다운로드 할지를 지정하지 않습니다. 왜냐하면 그것은 상관하지 않기 때문입니다. 그것은 단지 당신의 시스템에 설치되어있는 것을 사용하고 그것을 사용합니다. 로컬 컴퓨터에서 "가져 오기 boto"를 입력하면 가져온 내용이 무엇이든지 업로드됩니다.

다른 옵션은 우리의 CLI을 사용하여 .worker file으로 작업자를 업로드하는 것입니다. 두 번째 줄은 종속성을 설치하는 실행됩니다 픽처 인 픽처 명령은

runtime "binary" 
build 'pip install --install-option="--prefix=`pwd`/pips" boto' 
file 'botoworker.py' 
exec "botoworker.sh" 

그건 :

가 botoworker.worker 파일을 만듭니다

이 작업을 수행하려면, 여기 당신이해야 할 것입니다 무엇 . 명령 줄에서 pip 명령을 실행하는 것처럼 수정할 수 있습니다. "빌드"단계에서 작업자에게 명령을 실행하므로 작업을 실행할 때마다 한 번만 실행됩니다.

세 번째 줄은 실행하려는 파이썬 파일로 변경해야합니다. 파이썬 작업자 파일입니다. 여기에 우리가 이것을 테스트하는 데 사용되는 하나입니다 :

import boto 

당신이 botoworker.py로, 위의 어떠한 수정없이 작동해야한다는 저장하는 경우

. :)

네 번째 줄은 실제로 작업자를 실행하게 될 쉘 스크립트입니다. 아래에 사용한 것을 포함 시켰습니다. botoworker.sh로 저장하면 위의 .worker 파일을 수정하는 것에 대해 걱정할 필요가 없습니다.당신이 당신의 파이썬 파일 botoworker.py 이름을하지 않는 경우도 여기 변경해야합니다 -

PYTHONPATH="$HOME/pips/lib/python2.7/site-packages:$PYTHONPATH" python botoworker.py "[email protected]" 

당신은 파이썬 파일을 참조 알 수 있습니다. 이 모든 작업은 설치된 라이브러리를 포함하도록 PYTHONPATH를 설정 한 다음 Python 파일을 실행합니다.

업로드하려면 CLI가 설치되어 있어야합니다 (gem install iron_worker_ng, Ruby 버전이 1.9.3 이상인지 확인한 후). 쉘에서 "iron_worker upload botoworker"를 같은 디렉토리에서 실행하십시오. botoworker.worker 파일은 현재 있습니다.

희망이 있습니다.

+0

+1 철 작업자 문서에 나와 있습니다. –

+0

@KevinSimper 우리가 작업 중입니다. :) 우리 팀은 반복적으로 진행되므로 문서 작업 팀 (내 책임 임)이 계속 따라 잡을 수 없습니다. 우리는 희망을 갖고 이것이 훨씬 나아질 수있는 몇 가지 작업을하고 있습니다. – Paddy

+1

케빈 - 필요 없음. 우리는 곧 .worker에서'pip' 명령을 지원할 것입니다. – iced

13

최신 iron_worker 버전의 기본 지원은 pip입니다. 따라서 다음이 필요합니다.

runtime "python" 
exec "something.py" 

pip "boto" 
pip "someotherpip" 

full_remote_build true 
+2

특정 버전에 고정하고 싶다면'pip "boto", "== 2.9.2"' –