2014-07-21 4 views
1

내 배포 시나리오에는 일반적인 Django 설치가 포함되지만 여러 서버에서 실행됩니다. 기본적으로 소스 코드를 업로드하고 여러 빌드 단계 (.pyc 파일, collectstatic 컴파일 등)를 수행 한 다음 syncdbmigrate을 실행하고 마지막으로 apache2를 다시로드합니다.Fabric 및 Django 배포 시나리오

내 문제는 앞으로 더 많은 계획이있는 4-5 개의 서버에 코드를 배포하고 배포에 많은 시간이 소요된다는 것입니다 (서버 당 1 분 이상). 배포 프로세스의 거의 모든 단계는 syncdb/migrate를 제외하고는 병렬로 수행 할 수 있습니다. 패브릭을 사용하여 머신 중 하나에서만 DB 서버를 실행하고 나머지 작업은 병렬로 실행하는 방법이 있습니까?

+1

http://fabric.readthedocs.org/en/1.3.0/usage/parallel.html#decorators 않습니다 당신이 뭘 하려는지 예 주소? – dm03514

+0

이상적으로, 나는'single' 또는'once'와 같은 것을 원합니다. 기본적으로 특정 작업을 두 번 이상 실행하는 것은 의미가 없습니다. 호스트에 배포 할 때마다 한 번씩 실행하면됩니다. – ipartola

답변

0

각 작업마다 기능을 만들고 다른 기능으로 모두 불러 오기를 시도 했습니까?

예 :

@task 
@parallel 
copy_files(): 
    run('cp *') 
    ... 

@task 
@parallel 
restart_apache(): 
    run('/etc/init.d/httpd restart') 
    ... 

@task 
syncdb_app(): 
    run('python manage.py syncdb') 
    ... 

@task 
deploy(): 
    copy_files() 
    restart_apache() 
    syncdb_app() 
    ...