2013-05-03 4 views
3

나는 OS X 10.8.2에서 패브릭 1.6.0을 사용하고 있으며, 우분투 10.04의 원격 호스트에서 명령을 실행하고 있습니다.패브릭 sudo가 자동으로 실패 함

서버에서 sudo /etc/init.d/celeryd restart을 실행하여 셀러리 서비스를 다시 시작할 수 있습니다. - 그 직물 수익률을 의미없는

@task 
def restart(): 
    run('sudo /etc/init.d/celeryd restart') 

또는

@task 
def restart2(): 
    sudo('/etc/init.d/celeryd restart') 

또는 사용

명령 행 양식 fab <task_that_sets_env.host> -- sudo /etc/init.d/celeryd restart

을 명령은 항상 자동으로 실패 :

내가 사용하는 패브릭을 통해 동일한 명령을 전달합니다 오류가 있지만 celeryd가 실행 중이 아님을보고합니다.

여기 내 머리가 찢어지고 있습니다! Celery 로그 파일에는 아무 것도 관련이 없습니다. AFAIK Fabric은 명령을 바로 통과해야합니다.

+1

당신은 https://github.com 좀보고 할 수 있습니다/mher/celery-deploy. 패브릭을 사용하여 원격 호스트에서 셀러 리 노드를 다시 시작합니다. – mher

+0

서버에 SSH-ing 한 후 동일한 명령을 실행하면 출력은 무엇입니까? –

+0

@Bibhas 명령은 항상 서버에서 실행될 때 성공하며 패브릭을 통해 실행될 때는 항상 실패합니다. – knite

답변

2

어쩌면 나는 파티에 꽤 늦었을 것입니다.이 작업이 아니라면 나에게 downvote 할 수 있습니다.하지만 /etc/init.d에 다른 프로그램을 실행하는 데 비슷한 문제가 있습니다. 내 솔루션은 여기에 옵션에 pty=False

@task 
def restart(): 
    sudo('/etc/init.d/celeryd restart', pty=False) 

Theres는 문서를 추가하는 것입니다 (바람둥이와 MySQL 작동) :

http://docs.fabfile.org/en/1.7/api/core/operations.html#fabric.operations.run

관련 문제