Проблема с деплоем ВК-бота на сервис Heroku
Столкнулся с ошибкой при деплое моего бота для ВК.
Ошибка:
Последовательность моих действий:
git init
heroku login
heroku create appname
pip freeze > requirements.txt
git add .
git commit -m 'text'
git push heroku master
Содержимое файлов бота:
Procfile:
Ответы (1 шт):
Итак, вот инструкция по деплою телеграм бота на сервис Heroku. Буду всё показывать на примере Debian, но это не суть важно. Сначала необходимо скачать и установить под свою ось Git и Heroku Command Line Interface (CLI). Я устанавливаю программу под Linux командой sudo snap install heroku --classic и дожидаюсь процесса установки:
>>> heroku v7.59.1 from Heroku✓ installed
Git устанавливать не буду, так как он уже у меня установлен git --version:
git version 2.33.0
Далее в терминале вводим команду heroku login:
› Warning: Our terms of service have changed: https://dashboard.heroku.com/terms-of-service
heroku: Press any key to open up the browser to login or q to exit:
после чего нажимаем любую кнопку, кроме q и нас перекинет в браузер, где нужно будет нажать на кнопку Log in и дождаться процесса авторизации на сервисе, после чего можно будет закрыть страницу браузера. Возвращаемся обратно в терминал.
Перед тем, как загрузить нашего бота на Heroku, необходимо добавить еще два файла: requirements.txt и Procfile. Заметьте, что у Procfile нет никакого расширения. В Procfile напишем эту строку:
worker: python main.py
Сохраняем и закрываем файл. Данная строчка означает, что тип нашего dyno (так называется что-то на подобие сервера в Heroku) - worker будет работать с файлом main.py. Он будет работать всегда и без передышки. Web dyno будет иногда выключаться, но нам этого не надо.
В файл requirements.txt добавляем необходимые зависимости pip freeze -> requirements.txt :
certifi==2021.10.8
charset-normalizer==2.0.8
idna==3.3
pyTelegramBotAPI==4.2.0
requests==2.26.0
urllib3==1.26.7
Теперь у нас всё готово для загрузки бота на Heroku! Возвращаемся в терминал, где мы залогинились ранее и пишем heroku create:
› Warning: heroku update available from 7.59.1 to 7.59.2.
Creating app... done, ⬢ fierce-sea-36845
https://fierce-sea-36845.herokuapp.com/ | https://git.heroku.com/fierce-sea-36845.git
После этого у нас создаётся проект на Heroku. Зайдите на сайт и посмотрите его имя. Например, у меня создался проект fierce-sea-36845. Далее, в терминале следует добавить все файлы:
git add .
Потом делаем свой первый коммит:
git commit -m "make it better"
Используем удаленную команду git, чтобы подтвердить, что для вашего приложения установлен пульт: git remote -v. Вывод терминала ниже:
origin https://github.com/em0ji/python-bots.git (fetch)
origin https://github.com/em0ji/python-bots.git (push)
Если вы уже создали свое приложение Heroku, то можете легко добавить пульт в свой локальный репозиторий с помощью команды heroku git:remote -a fierce-sea-36845, где fierce-sea-36845 это имя вашего приложения. Так и сделаем, после чего дождемся вывода в терминале:
› Warning: heroku update available from 7.59.1 to 7.59.2.
set git remote heroku to https://git.heroku.com/fierce-sea-36845.git
Ну и далее делаем деплой своего кода на Heroku:
git push heroku main
После чего просто дожидаемся деплоя нашего бота на сервис Heroku:
Enumerating objects: 824, done.
Counting objects: 100% (824/824), done.
Delta compression using up to 4 threads
Compressing objects: 100% (799/799), done.
Writing objects: 100% (824/824), 4.21 MiB | 2.19 MiB/s, done.
Total 824 (delta 58), reused 0 (delta 0), pack-reused 0
remote: Compressing source files... done.
remote: Building source:
remote:
remote: -----> Building on the Heroku-20 stack
...
remote: https://fierce-sea-36845.herokuapp.com/ deployed to Heroku
remote:
remote: Verifying deploy... done.
To https://git.heroku.com/fierce-sea-36845.git
* [new branch] main -> main
Теперь стоит немного подождать (обычно от 1 до 3 минут) и потом выполнить следующую команду в терминалe heroku ps:scale worker=1, чтобы запустить наш worker dyno в работу. Вот вывод терминала:
› Warning: heroku update available from 7.59.1 to 7.59.2.
Scaling dynos... done, now running worker at 1:Free
Ну вот и всё... наш бот задеплоен на сервис Heroku. Это мой примитивный тестовый эхо-бот @echo_1984_bot для эксперимента по деплою на сервис Heroku - работает.
Попробуйте сделать всё по инструкции и у вас всё обязательно получится. В вашей ситуации может быть ещё один момент, перепроверьте файл requirements.txt и все в нём зависимости. Как вариант, можно удалить все привязки к версиям библиотек и переустановить их на более свежие версии. Возможно у вас конфликты из-за того, что в файле requirements.txt присутствуют одинаковые библиотеки с разными версиями. Всех благ.


