2017-03-27 3 views
0

의 .conf 파일을셀러리는

[program:task1] 
    directory=/home/ubuntu/proj1 
    command=/usr/bin/python3 /usr/local/bin/celery -A proj1 worker -l info --concurrency=10 -n [email protected]%%h 
    user=ubuntu 
    numprocs=1 
    stdout_logfile=/var/log/proj1_celeryd.log 
    stderr_logfile=/var/log/proj1_celeryd.log 
    autostart=true 
    autorestart=true 
    startsecs=10 
    stopwaitsecs=600 
    priority=998 

[program:task2] 
    directory=/home/ubuntu/proj2/ 
    command=/usr/bin/python3 /usr/local/bin/celery -A proj2 worker -l info --concurrency=10 -n [email protected]%%h 
    user=ubuntu 
    numprocs=1 
    stdout_logfile=/var/log/proj2_celeryd.log 
    stderr_logfile=/var/log/proj2_celeryd.log 
    autostart=true 
    autorestart=true 
    startsecs=10 
    stopwaitsecs=600 
    priority=998 

[group:celeryworkers] 
programs=task1,task2 

proj1_worker 및 proj2_worker 고립되지 않아요 절연 작동하지 않습니다. 처음에는 proj2_worker라고 불리는 경우에도 항상 proj1_worker가 호출됩니다.

어디서 잘못 될지 모르겠습니다. 친절하게 도와주세요.

정말 당신이 각 프로젝트에 대한 virtualenv을 사용하는 것이 좋습니다 사전

모든
+0

어떤 중개인을 사용하십니까? 래빗 맥스, 레디 스, ...? – illagrenan

+0

RabbitMQ 브로커 – Rahul

답변

1

먼저 감사드립니다. 두 개의 별도 가상 서버 (사용자가 직접 지정할 수 있음)를 만듭니다 (https://docs.python.org/3/library/venv.html 참조).

python3 -m venv /home/ubuntu/virtualenvs/proj1 
python3 -m venv /home/ubuntu/virtualenvs/proj2 

활성화 VIRTUALENV 설치 셀러리 :

source /home/ubuntu/virtualenvs/proj1/bin/activate 
pip install --upgrade celery 

source /home/ubuntu/virtualenvs/proj2/bin/activate 
pip install --upgrade celery 

감독자의 구성은 다음과 같아야합니다

[program:task1] 
    directory=/home/ubuntu/proj1 
    command=/home/ubuntu/virtualenvs/proj1/bin/celery worker -A proj1 -l info --concurrency=10 -n [email protected]%%h 
    # ... 

[program:task2] 
    directory=/home/ubuntu/proj2 
    command=/home/ubuntu/virtualenvs/proj1/bin/celery worker -A proj2 -l info --concurrency=10 -n [email protected]%%h 
    # ... 

다음으로, 당신의 프로젝트에 2 개 별도의 가상 호스트를 만들 :

rabbitmqctl add_user proj_1 <PASSWORD> 
rabbitmqctl add_vhost proj_1_vhost 
rabbitmqctl set_permissions -p proj_1_vhost proj_1 ".*" ".*" ".*" 

rabbitmqctl add_user proj_2 <PASSWORD> 
rabbitmqctl add_vhost proj_2_vhost 
rabbitmqctl set_permissions -p proj_2_vhost proj_2 ".*" ".*" ".*" 

마지막 셀러리 구성이 새로 만든 가상 호스트를 사용하도록 수정 :

app = Celery('proj1_celery_app') 
app.conf.update(
    # ... 
    broker_url='amqp://proj1:<PASSWORD>@localhost:5672/proj_1_vhost' 
    # ... 
) 

app = Celery('proj2_celery_app') 
app.conf.update(
    # ... 
    broker_url='amqp://proj2:<PASSWORD>@localhost:5672/proj_2_vhost' 
    # ... 
) 

더 많은 정보를 위해 토끼 가상 호스트이 SO 포스트 참조에 대해 : Running multiple instances of celery on the same server합니다.

+0

안녕하세요, 단계 답안을 통해 단계 주셔서 감사합니다. 제작 과정에서 작동합니까? – Rahul