Шаблон для службы в стиле Google Alerts

Я создаю приложение, которое постоянно собирает данные. Я хочу предоставить настраиваемую систему предупреждений для пользователей, в которой они могут указать параметры для типов информации, о которых они хотят получать уведомления. Вдобавок ко всему, я бы хотел, чтобы пользователь мог указывать частоту предупреждений (по мере их поступления, ежедневный дайджест, еженедельный дайджест).

Есть ли лучшие практики или руководства по этой теме?

Мои инстинкты подсказывают мне, что в них будут вовлечены очереди и рабочие, но я не совсем понимаю, как именно.

Я использую Parse.com в качестве своей базы данных и, вероятно, также буду индексировать все с помощью поиска в стиле Lucene. Таким образом, появляется возможность для пользователя указать строку запроса, чтобы указать, какие предупреждения он / она хочет.


person user94154    schedule 06.02.2013    source источник


Ответы (1)


Если вы используете Rails, Heroku и Parse, мы сделали нечто подобное. Фактически мы создали второе приложение Heroku, в котором не было веб-дино - у него был только рабочий дино. Этот пользователь по-прежнему может получить доступ к той же учетной записи Parse.com и запускать все его задачи в задаче rake, как указано здесь:

https://devcenter.heroku.com/articles/scheduler#defining-tasks

У нас есть несколько классов, которые могут справиться с тяжелой работой:

class EmailWorker
  def self.send_daily_emails
    # queries Parse for what it needs, loops through, sends emails
  end
end

У нас также есть scheduler.rake в lib / tasks:

require 'parse-ruby-client'
task :send_daily_emails => :environment do
  EmailWorker.send_daily_emails
end

Наша панель планировщика в Heroku выглядит примерно так:

rake send_daily_emails

Мы устанавливаем его на работу каждую ночь. Обратите внимание, что общедоступное веб-приложение Heroku не выполняет эту работу, а скорее выполняет версию «планировщика». Вам просто нужно убедиться, что вы нажимаете на оба варианта каждый раз, когда обновляете свой код. Таким образом, это бесплатно, но если вы когда-нибудь захотели объединить их, это просто, поскольку они представляют собой одну и ту же базу кода.

Вы также можете протестировать его, запустив heroku run rake send_daily_emails со своего компьютера разработчика.

person Jamon Holmgren    schedule 06.02.2013
comment
Для подобных вещей вы должны использовать IronWorker. Намного дешевле, эффективнее и гибче. Я могу помочь с этим. - person user94154; 06.02.2013
comment
Выглядит интересно. Но дешевле, чем бесплатно? :) - person Jamon Holmgren; 06.02.2013
comment
Iron.io предлагает щедрый бесплатный тарифный план. И если вы перейдете на уровень выше, это будет намного дешевле, чем платить за ежемесячный динамометрический стенд Heroku. Плати как сможешь... - person user94154; 06.02.2013
comment
Единственная проблема в том, что у него нет доступа к моим моделям Rails и многому другому, поэтому мне пришлось бы создать несколько мини-приложений, чтобы справиться с тем, что я хочу делать. На данный момент не стоит, но стоит подумать, если у нас есть проблемы с масштабированием. - person Jamon Holmgren; 06.02.2013