LINUX.ORG.RU

Фоновая работа со сторонним сервисом - как организовать?

 


0

2

Вопрос, который я решил вынести в отдельный тред.
Допустим, веб приложение создано для автоматизации работы со сторонним сервисом. Юзер регистрируется, настраивает работу приложения в соответствии с потребностями и идет по своим делам. А приложение должно продолжать работать с сервисом без каких-либо дальнейших действий с его стороны. Как реализовать это - я толком не понимаю. static_lab посоветовал мне создать отдельного демона, который будет читать параметры из БД, взаимодействовать с сервисом, а полученные данные писать опять в БД, откуда их будет получать остальное веб-приложение. Запускать демона либо по cron, либо (т.к. приложение я намереваюсь писать с помощью ruby on rails) пользоваться библиотекой daemons (http://habrahabr.ru/post/28932/).
Но что-то я подозреваю, что есть способы получше. Как бы поступили вы?

★★

Юзер регистрируется, настраивает работу приложения в соответствии с потребностями и идет по своим делам

...и решает залогиниться и проверить, как оно.

Правильно тебе посоветовали - взваливать на клиентскую сторону какое-либо управление глупо.

ziemin ★★
()
Ответ на: комментарий от ziemin

и решает залогиниться и проверить, как оно.

С другой машины/телефона/микроволновки, естественно.

ziemin ★★
()
Ответ на: комментарий от ziemin

взваливать на клиентскую сторону

Что ты имеешь в виду под «клиентской стороной»? Кажется, мы друг друга не понимаем.

netcat ★★
() автор топика
Ответ на: комментарий от ziemin

Клиентская сторона - это, грубо говоря, браузер юзера, где выполняются разве что скрипты на js. Серверная - это само веб-приложение (в моем случае, написанное с помощью RoR). Заданный юзером конфиг в любом случае хранится в БД на сервере. При чем тут возможность того, что юзер залогинится и проверит, а то и сделает это с другого компа?

netcat ★★
() автор топика
Ответ на: комментарий от trashymichael

Я плохо представляю себе реалии веб-девелопмента. Хостер разрешит мне пихать всякую дрянь в crontab? Или как это лучше организовать?

netcat ★★
() автор топика

копай в сторону организации очереди задач

umren ★★★★★
()
Последнее исправление: umren (всего исправлений: 1)

Вариантов много. От идеи городить свой велосипед с daemons я бы отказался — это, наверное, было годно в 2008, но не сейчас. Сделал бы как показано здесь.

Anatolik ★★
()
Ответ на: комментарий от netcat

Я, честно говоря, удивлен, что у фреймворков нет такой фичи из коробки.

В Rails 4 хотели запилить, но не сошлись в том, каким оно должно быть. Так что пока что каждый сам должен выбрать понравившийся gem.

Anatolik ★★
()
Ответ на: комментарий от trashymichael

Сервер на балконе? Или как?

netcat ★★
() автор топика

Я думаю вам тут толком не ответят. А вы даете мало/неправильную инфу на входе, сложно понять, что вообще нужно, на что вы рассчитываете. Кроме того, есть большая разница - что такое «сторонний сервис»? Если хотите, стукните мне в лицо coderage@jabber.ru

coderage
()

Я бы написал полноценного отдельного демона, с которым web-приложение могло бы общаться по RPC (своевременно сообщать демону об изменениях или о новых заданиях, это куда лучше постоянного опроса БД), и который также самостоятельно работал бы с БД.

Может даже добавить long-poll или websocket'ы для оперативного информирования клиентов (если это необходимо).

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

Chaser_Andrey ★★★★★
()
Последнее исправление: Chaser_Andrey (всего исправлений: 1)
Ответ на: комментарий от Chaser_Andrey

Я бы написал полноценного отдельного демона, с которым web-приложение могло бы общаться по RPC (своевременно сообщать демону об изменениях или о новых заданиях, это куда лучше постоянного опроса БД), и который также самостоятельно работал бы с БД.

Нафиг не нужно, т.к. этим демоном будет выступать сам PHP. Если человек в вебе не разрабатывает, то связать демона на Си, морду на ПХП и докрутить к ней всякие jQuery - это голову сломать.

А вообще все упирается в сервис-донор. Одна капча и можно забить на идею.

coderage
()
Ответ на: комментарий от coderage

Нафиг не нужно, т.к. этим демоном будет выступать сам PHP

http://habrahabr.ru/post/179399/

Если человек в вебе не разрабатывает, то связать демона на Си

Это может быть также C++/Perl.

морду на ПХП и докрутить к ней всякие jQuery - это голову сломать.

Если человек в вебе не разрабатывает, то ему всё равно, в чём ломать голову.

Chaser_Andrey ★★★★★
()
Ответ на: комментарий от Chaser_Andrey

http://habrahabr.ru/post/179399/

Ну да, пойду сделаю apt-get purge этому ублюдку PHP. Ведь аж на хабре так сказали! :)

Это может быть также C++/Perl.

Я думаю, очевидно, что Си здесь был для примера?

Если человек в вебе не разрабатывает, то ему всё равно, в чём ломать голову.

И к чему мы пришли? «Какой язык лучше»? Я не уловил конструктивной нотки в вашем сообщении.

coderage
()
Ответ на: комментарий от Chaser_Andrey

Прошу прощения, первую часть моего ответа можно игнорировать: я подумал, что это очередная холиварная статья. Пробежался глазами - там всё верно написано и ТС статья полезна.

coderage
()
Ответ на: комментарий от Anatolik

Он намеревается просто разобраться для начала, что тут в ваших этих вебах как работает. Мы пообщались в жаббере, стало понятно. Подробности опущу.

coderage
()
Ответ на: комментарий от coderage

И к чему мы пришли? «Какой язык лучше»? Я не уловил конструктивной нотки в вашем сообщении.

Я к тому, что сразу стоит писать нормальную архитектуру. Судя по темам ТС, он знаком с C/C++, а это уже огромный плюс. RPC тоже должен быть, неважно, на чём демон. То почему не выбрать для демона язык получше, чем PHP? :]

Chaser_Andrey ★★★★★
()
Ответ на: комментарий от Chaser_Andrey

Я, честно, не стал бы писать морду на С++. Это ад и 3.14здец. Для морды ПХП - самое оно. Пусть оно там умирает сколько угодно.

Демон? Да, я только двумя руками «за», чтобы он был на C++.

Просто я стараюсь учитывать, что человек в веб не умеет. А если так, то чем больше технологий он сюда приплетет, тем хреновее будут дела с разработкой. Как с Half-Life 3. *петросян mode off*

coderage
()
Ответ на: комментарий от Chaser_Andrey

Кстати, я же не говорил, что демон должен быть на пыхе. Просто обрисовал в целом, а для демона предложил Си, причем сам, я, без вас. Или у меня уже шизофрения?

coderage
()

еще раз повторю (т.к. советчики тут полезли в какие-то дебри с c++/c что тут вообще не нужно) - ваша задача решается «очередью задач» на любом языке (пхп, питон, руби, ява, сишарп) - без всяких демонов (хотя они там будут) и кронов

umren ★★★★★
()
Последнее исправление: umren (всего исправлений: 1)
Ответ на: комментарий от coderage

Просто я стараюсь учитывать, что человек в веб не умеет. А если так, то чем больше технологий он сюда приплетет, тем хреновее будут дела с разработкой.

шо там уметь, если в состоянии демона на С правильно написать, то и с его взаимодействием с веб-мордой разберётся, а вот наоборот далеко не всегда бывает

Harald ★★★★★
()
Ответ на: комментарий от Chaser_Andrey

Мне лень перечитывать, я запутался. Я имел ввиду, что демоном может выступать и сам PHP. А может и не он. Если не он, то задача становится несколько сложнее и нужно ли такое усложнение на этапе, когда даже прототипа нет - не уверен я.

coderage
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.