Главная
Блог разработчиков phpBB
 
+ 17 предустановленных модов
+ SEO-оптимизация форума
+ авторизация через соц. сети
+ защита от спама

Пишем мониторинг наличия билетов на РЖД, part 2

Anna | 15.06.2014 | нет комментариев
В первой части было показано как написать примитивный враппер вокруг присутствующего http API ржд. В этой части продолжим и напишем действующий мониторинг с уведомлением на почту. Сайт плана засполагается по бывшему здесь и здесь запасной

В первой части приложение было не threadsafe, т.е. в настройках app.yaml значилось:

threadsafe: false

поправим эту обстановку, изменим:

def main():
    application.run()

if __name__ == "__main__":
    main()

на:

app = webapp2.WSGIApplication([
    ('/', MainPage),
], debug=False)

Есстественно пришлось также переписать немножко кода, выигрыш от каждого этого дальнейший: приthreadsafe: false appengine ставит новые сессии в очередь и запускает для всякой сессии новейший инстанс (с небольшим временным лагом), при включенном threadsafe подразумевается что разработчик правильно реализовал многопоточную логику.
Дальше необходимо было решить два вопроса: почта и запуск по крону, начнем с крона: для этого необходимо сделать в рабочей дире файл cron.yaml и указать куда и как Зачастую следует обращаться крон демону:

cron:
- description: mail summary job
  url: /summary_mail
  schedule: every 1 hours

На

/summary_mail

повесим обработчик для рассылки на энергичные аккаунты, а для того Дабы нехорошие дяди не могли его дергать независимо и как следствие — скушать все наши квоты и заспамить энергичных пользователей, необходимо ограничить доступ к нему только для админов и гугл крона, добавим в app.yaml строки:

- url: /summary_mail
  script: web.app
  login: admin

Список админов для приложения настраивается из консоли менеджера (ребята школьники хакеры, не волнуйтесь в данном приложении нет никакой админки и не необходимо ее пробовать «пробивать» потому как как следовало из логов при публикации прошлого поста, таки находились эксперты…, данная консоль предоставляется средствами appengine).
Некоторое время я думал — что же делать с почтовой рассылкой, прикручивать стороннюю капчу либо делать свою, в результате пошел по простейшему пути — я использую гугл аккаунт и позже прохождения гугл авторизации (есстественно все идет через редирект и никакие пароли я не берегу) я получаю почтовый ящик пользователя, на тот, что он и будет получать письма о свободных местах. Фунционал для работы с почтой примитивный:

def sendMail(account, body):
  mail.send_mail(sender  = "rzd wrapper support <robot.sender.rzd@gmail.com>",
                 to      = account.email(),
                 subject = "train report",
                 html    = body,
                 body    = body)

Да тело письма в текстовом представлении и html у меня счас идентичное, но скоро я это поправлю.
Для полноты картины необходимо сказать, что радиоактивные исходники по бывшему здесь, безусловно же я наведу там порядок со временем, так же могут отслеживаться редчайшие, но ошибки при работе, потому как отвечает РЖД не безупречно, и я где мог подстелил соломку, но думается не всюду, в целом функционал абсолютно рабочий, всякий может из исходников запустить свое локальное приложение и допилить его до собсвенных нужд. Крон опрашивает присутствие билетов раз в час. На данный момент дозволено подписаться только на один поезд. В дальнейших планах прикрутить Jinja2 и сделать больше славный интерфейс, так же испробовать реализовать на APPENGINE интерфейс к open source морфологии и сделать что то подобно спелл чекера. Верю данный сервис будет для когото пригоден.

Источник: programmingmaster.ru

Оставить комментарий
Форум phpBB, русская поддержка форума phpBB
Рейтинг@Mail.ru 2008 - 2017 © BB3x.ru - русская поддержка форума phpBB