Как запустить pgBouncer в heroku.yml с Дафни - PullRequest
0 голосов
/ 31 января 2020

Итак, я создал приложение для чата и развернул его с помощью heroku. Так как я нахожусь на hobby-dev, у меня может быть только 20 соединений с postgres, поэтому, следуя некоторым советам в Интернете, я решил, что использование pgbouncer может быть хорошей идеей. Документ heroku по настройке пакета сборки (например, последняя часть https://devcenter.heroku.com/articles/python-concurrency-and-database-connections#number -of-active-connections ) ограничен, и все, что я нашел, попросило меня что-то изменить в Procfile. Проблема в том, что я использовал контейнер docker и, таким образом, использовал heroku.yml и команду daphne для запуска программы. Непосредственное добавление bin/start-pgbouncer в веб просто вызывает сбой всего приложения.

Это моя текущая команда запуска

run:
  web: daphne test_project.asgi:application --port $PORT --bind 0.0.0.0 -v2

Я пытался

run:
  web: bin/start-pgbouncer-stunnel daphne test_project.asgi:application --port $PORT --bind 0.0.0.0 -v2

и

run:
  web: start-pgbouncer-stunnel daphne test_project.asgi:application --port $PORT --bind 0.0.0.0 -v2

Оба не удалось. Я также обнаружил в логах heroku, что heroku, кажется, автоматически добавляет /bin/sh -c к моей команде запуска (например, /bin/sh -c daphne\ test_project.asgi:application\ --port\ \53166\ --bind\ 0.0.0.0\ -v2).

Может ли это быть причиной проблемы? Что я должен добавить в веб, чтобы запустить pg-bouncer вместе с моим приложением?

1 Ответ

0 голосов
/ 14 февраля 2020

Самое простое решение для этого - создать bash скрипт run.sh.

set -ev

service pgbouncer start
daphne test_project.asgi:application --port $PORT --bind 0.0.0.0 -v2
service pgbouncer stop

run:
  web: run.sh
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...