heroku.yml 如何有两个工人?
How to have two workers for heroku.yml?
我有以下heroku.yml
。 'containers' 共享相同的 Dockerfile
:
build:
docker:
web: Dockerfile
celery: Dockerfile
celery-beat: Dockerfile
release:
image: web
command:
- python manage.py migrate users && python manage.py migrate
run:
web: python manage.py runserver 0.0.0.0:$PORT
celery: celery --app=my_app worker --pool=prefork --concurrency=4 --statedb=celery/worker.state -l info
celery-beat: celery --app=my_app beat -l info
本来打算三个容器,结果Heroku只接受一个web
,另一个应该是workers
.
那么我要在 heroku.yml
处修改什么以使 celery
和 celery-beat
容器成为 worker
?
更新
我已将 heroku.yml
更改为以下内容,但 Heroku 仅保留最后一个工人(即芹菜节拍)而忽略第一个工人:
build:
docker:
web: Dockerfile
release:
image: web
command:
- python manage.py migrate users && python manage.py migrate
run:
web: python manage.py runserver 0.0.0.0:$PORT
worker:
command:
- celery --app=my_app worker --pool=prefork --concurrency=4 --statedb=celery/worker.state -l info
image: web
worker:
command:
- celery --app=my_app beat -l info
image: web
我错过了什么?
The name worker
isn't really important:
No process types besides web
and release
have special properties
所以给他们不同的名字:
run:
web: python manage.py runserver 0.0.0.0:$PORT
celery_worker:
command:
- celery --app=my_app worker --pool=prefork --concurrency=4 --statedb=celery/worker.state -l info
image: web
celery_beat:
command:
- celery --app=my_app beat -l info
image: web
缩放这些进程时,使用名称 celery_worker
和 celery_beat
。
一个更好的选择是合并芹菜工人并在单个工人/命令中击败:(只能在Linux os)
run:
web: python manage.py runserver 0.0.0.0:$PORT
celery_worker:
command:
- celery --app=my_app worker --pool=prefork --concurrency=4 --statedb=celery/worker.state -l info --beat -l info
image: web
我有以下heroku.yml
。 'containers' 共享相同的 Dockerfile
:
build:
docker:
web: Dockerfile
celery: Dockerfile
celery-beat: Dockerfile
release:
image: web
command:
- python manage.py migrate users && python manage.py migrate
run:
web: python manage.py runserver 0.0.0.0:$PORT
celery: celery --app=my_app worker --pool=prefork --concurrency=4 --statedb=celery/worker.state -l info
celery-beat: celery --app=my_app beat -l info
本来打算三个容器,结果Heroku只接受一个web
,另一个应该是workers
.
那么我要在 heroku.yml
处修改什么以使 celery
和 celery-beat
容器成为 worker
?
更新
我已将 heroku.yml
更改为以下内容,但 Heroku 仅保留最后一个工人(即芹菜节拍)而忽略第一个工人:
build:
docker:
web: Dockerfile
release:
image: web
command:
- python manage.py migrate users && python manage.py migrate
run:
web: python manage.py runserver 0.0.0.0:$PORT
worker:
command:
- celery --app=my_app worker --pool=prefork --concurrency=4 --statedb=celery/worker.state -l info
image: web
worker:
command:
- celery --app=my_app beat -l info
image: web
我错过了什么?
The name worker
isn't really important:
No process types besides
web
andrelease
have special properties
所以给他们不同的名字:
run:
web: python manage.py runserver 0.0.0.0:$PORT
celery_worker:
command:
- celery --app=my_app worker --pool=prefork --concurrency=4 --statedb=celery/worker.state -l info
image: web
celery_beat:
command:
- celery --app=my_app beat -l info
image: web
缩放这些进程时,使用名称 celery_worker
和 celery_beat
。
一个更好的选择是合并芹菜工人并在单个工人/命令中击败:(只能在Linux os)
run:
web: python manage.py runserver 0.0.0.0:$PORT
celery_worker:
command:
- celery --app=my_app worker --pool=prefork --concurrency=4 --statedb=celery/worker.state -l info --beat -l info
image: web