скрипт на питоне работает но героку вылетает - PullRequest
0 голосов
/ 19 ноября 2018

Я создаю приложение для моего отца, которое собирает результаты лото (beautifulsoup) и отправляет их по электронной почте (sendgrid). Я использую heroku для запуска сценария github repo по расписанию. Если я запустлю его, он будет работать нормально. Электронные письма будут отправлены, но происходит сбой процесса, который перезапускает их из-за политики перезапуска dyno . Сбой не так уж и плох, потому что скрипт выполнит свою работу, но проблема заключается в перезапуске динамометрического стенда, что приводит к отправке большого количества электронных писем. Вы найдете сценарий в моем репо.

Мое предположение - асинхронность с красивым супом и / или сендгридом. Знаете ли вы, как получить лучшую информацию о журнале в героку? Если я закомментирую фактическую часть отправки электронной почты и запустлю планировщик через десять минут, то это сработает, а работник - нет.

Мой Procfile выглядит так:

worker: python lotto_mailer.py

Вот журнал сервера.

Nov 19 05:56:36 lotto-mailer heroku/scheduler.2285: Starting process with command `if [ "$(date +%u)" = 1 ]; then python lotto_mailer.py; fi` 
Nov 19 05:56:37 lotto-mailer heroku/scheduler.2285: State changed from starting to up 
Nov 19 05:56:40 lotto-mailer heroku/scheduler.2285: State changed from up to complete 
Nov 19 05:56:40 lotto-mailer heroku/scheduler.2285: Process exited with status 0 
Nov 19 05:56:41 lotto-mailer app/scheduler.2285: Ziehung vom Samstag, 17.11.2018 
Nov 19 05:56:41 lotto-mailer app/scheduler.2285: Gewinnzahlen: [3, 6, 18, 31, 39, 40] SZ: 5 
... App OUTPUT ...
Nov 19 05:56:41 lotto-mailer app/scheduler.2285: UTC Hour: 13

Не отвлекайтесь на команду, которую запускает планировщик. Это просто запустить его только по понедельникам. Кажется, что только рабочий сбой, а не планировщик.

Nov 19 06:04:24 lotto-mailer heroku/worker.1: State changed from crashed to starting 
Nov 19 06:04:29 lotto-mailer heroku/worker.1: Starting process with command `python lotto_mailer.py` 
Nov 19 06:04:29 lotto-mailer heroku/worker.1: State changed from starting to up 
Nov 19 06:04:29 lotto-mailer heroku/worker.1: State changed from crashed to starting 
Nov 19 06:04:32 lotto-mailer heroku/worker.1: State changed from up to crashed 
Nov 19 06:04:33 lotto-mailer heroku/worker.1: Process exited with status 0 
Nov 19 06:04:33 lotto-mailer app/worker.1: Ziehung vom Samstag, 17.11.2018 
Nov 19 06:04:33 lotto-mailer app/worker.1: Gewinnzahlen: [3, 6, 18, 31, 39, 40] SZ: 5
... APP  OUTPUT ...

Почему рабочий вообще бежит? Если вам нужна дополнительная информация, просто дайте мне сейчас. Спасибо за помощь.

решение: Я признал, что могу деактивировать работника здесь и просто запустите планировщик, но остается вопрос: почему сбой рабочего.

1 Ответ

0 голосов
/ 19 ноября 2018

работник предназначен для веб-службы / сервера, а не для приложения CLI, поэтому происходит сбой, и вы получаете много писем, потому что он автоматически перезапускается при сбое.Работник не требуется, вы можете удалить Procfile или создать фиктивный сервер, который на самом деле планировщик, используя while и sleep.

...