Страницы

Поиск по вопросам

Показаны сообщения с ярлыком heroku. Показать все сообщения
Показаны сообщения с ярлыком heroku. Показать все сообщения

вторник, 31 марта 2020 г.

Не получается сделать push python приложения в Heroku

#git #heroku #push


Пытаюсь сделать push python-приложения в heroku, но каждый раз не выходит с одной
и той же ошибкой. Как можно исправить?

Counting objects: 11, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (10/10), done.
Writing objects: 100% (11/11), 5.72 KiB | 0 bytes/s, done.
Total 11 (delta 3), reused 0 (delta 0)
remote: Compressing source files... done.
remote: Building source:
remote:
remote: -----> App not compatible with buildpack: https://codon- 
buildpacks.s3.am
azonaws.com/buildpacks/heroku/python.tgz
remote:        More info: 
https://devcenter.heroku.com/articles/buildpacks#detec
tion-failure
remote:
remote:  !     Push failed
remote: Verifying deploy...
remote:
remote: !       Push rejected to projectname.
remote:
To https://git.heroku.com/projectname.git
! [remote rejected] master -> master (pre-receive hook declined)
error: failed to push some refs to 'https://git.heroku.com/projectname.git'

    


Ответы

Ответ 1



Немного поискал и создал Procfile, после некоторого времени наконец сработало.

воскресенье, 8 марта 2020 г.

Изображения пропадают с Heroku

#ruby_on_rails #ruby #heroku


Пользуюсь Paperclip. В девелопменте все ок, но на Хероку добавляю изображения к постам,
сначала все нормально - все грузит и показывает, но через какое-то время все изображения
пропадают - на их месте только названия файлов. В чем может быть проблема?

Heroku logs выдает что то про неполадки с путями:

2016-05-13T14:38:05.031223+00:00 heroku[router]: at=info method=GET path="/system/posts/images/000/000/007/medium/app-server-arena2.png?1463131430"
host=arcane-taiga-31170.herokuapp.com request_id=21181509-0382-494c-b4d8-fc0837464c99
fwd="92.100.233.26" dyno=web.1 connect=0ms service=4ms status=404 bytes=1789
2016-05-13T14:38:05.029499+00:00 app[web.1]: ActionController::RoutingError (No route
matches [GET] "/system/posts/images/000/000/007/medium/app-server-arena2.png"):
2016-05-13T14:38:05.027456+00:00 app[web.1]: Started GET "/system/posts/images/000/000/007/medium/app-server-arena2.png?1463131430"
for 92.100.233.26 at 2016-05-13 14:38:05 +0000

    


Ответы

Ответ 1



Да, Heroku так работает. Локальный диск у него "эфемерный" и может быть пересоздан из образа в любой момент. А именно, когда приложение "засыпает", его диск уничтожается, а когда " будят", создаётся новый, отдельный на каждую машинку (dyno). Поэтому на диск ничего, что предназначено для длительного хранения, сохранять нельзя. Нужно использовать внешнее хранилище. Можно сохранять прямо в БД (они не для этого предназначены, но в теории это реально), а можно подключить внешнюю службу хранения с доступом по HTTP вроде Amazon Simple Storage Service (S3), а можно придумать/найти что-то ещё.

суббота, 1 февраля 2020 г.

Деплой бота на сервере Heroku

#python #python_3x #heroku


Может кто--нибудь дать инструкцию, как развернуть бота на сервере heroku (написанном
на python)? Спасибо заранее.
    


Ответы

Ответ 1



Первым делом создайте Git репозиторий в папке с ботом: git init Войдите в аккаунт Heroku: heroku login Создайте приложение: heroku create appname --region eu Создайте файл Procfile с содержимым: bot: python main.py Если бот на веб-хуках, замените bot на web. Но на бесплатном тарифе, бот будет засыпать каждые 30 минут если не будет подключений, по этому на Heroku free лучше держать ботов на лонг-поллинге. Но проблема с засыпанием веб приложения решается с помощью http://kaffeine.herokuapp.com/. Теперь нужно упаковать все зависимости проекта: pip freeze > requirements.txt Теперь наша папка выглядит приблизительно так: Procfile main.py requirements.txt Коммитим изменения: git add . затем git commit -m 'commit' Пушим на Heroku: git push heroku master Запускаем бота: heroku ps:scale bot=1 Смотрим логи: heroku logs -t На этом всё.

Ответ 2



В папке с проектом должны быть такие 3 файла: Proc web: python bot.py requirements.txt pyTelegramBotAPI==3.6.6 heroku==0.1.4 + другие модули (сгенерировать этот файл можно так: pip freeze > requirements.txt) runtime.txt python-3.7.0 или другая версия python Из папки, где находится проект, запускаете такие команды: git init git add . git commit -m "My first commit" heroku create git push heroku master Дополнительно рекомендую установить токен как переменную: heroku config:set TOKEN=7593654323:AAlkjHjhDZiWUD7Th4Dl_uPlkjpdorpoHGhgdsPVjQ (также можно установить переменные и на сайте Хероку) и обращаться к ней из программы import os os.environ['TOKEN'])

среда, 10 июля 2019 г.

Что такое Slug size на Heroku?

Что такое Slug size? Ещё на англоязычном стэке я прочитал, что помимо 300 MB есть доступ к "локальной файловой системе", где можно хранить до 1GB. Как это сделать?


Ответ

Когда вы закачиваете на хероку ваше веб-приложение, сервер выполняет ряд стандартных задач в зависимости от стека технологий. Это сборка стилей и скриптов, минификация и сжатие файлов и т.д.
В конечном итоге сервер получает собранное и готовое к запуску приложение. Со всеми стилями, скриптами, изображениями и прочими ресурсами. Такое приложение в хероку и называется slug
А slug size - это допустимый размер такого приложения. То есть, если ваше приложение в упакованном для запуска виде будет весить больше 300 Мб, хероку его не запустит.
Поэтому обращайте внимание на ресурсы, которые вы храните в репозитории с проектом. Архивы, видео, тяжелую графику - лучше по возможности вообще держать не в репозитории с кодом, а в отдельном хранилище. Например, на AWS S3

Доступ к файловой системе хероку может и давать, но для хранения временных файлов - кеша, файлов на аплоаде. В таком хранилище не стоит держать долговременные файлы. Опять-таки - лучше привязать к проекту внешнее хранилище.