Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Concept: reorganization for daemon [RUS] #28

Open
idlesign opened this issue Feb 12, 2019 · 6 comments
Open

Concept: reorganization for daemon [RUS] #28

idlesign opened this issue Feb 12, 2019 · 6 comments

Comments

@idlesign
Copy link
Owner

idlesign commented Feb 12, 2019

Для повышения гибкости приложения следует рассмотреть возможность и целесообразность запуска торрта фоновым процессом. Примерная схема:

20190211_204832

Из схемы видно, что фоновый процесс должен будет предоставлять возможность взаимодействия с собой других компонентов, таких как различные UI (CLI, Web), предположительно по HTTP API.

В качестве базы для приложения можно использовать каркас для веб-приложений, например Django. Благодаря каркасу можно будет дёшево и быстро развивать все подсистемы приложения. Так, например, можно перенести данные из файла конфигурации в БД (в портативном виде на sqlite), из коробки иметь решение по ограничению доступа к API/Web, а также решения для построения самого веб-интерфейса (с удобным управлением торрентами, настройками и пр).

Минусом использования полноценного каркаса типа Django является его размер, что может быть критично, например, для старых или маломощных NAS. Помимо этого, желательно использование свежих версий каркаса, что выливается в необходимость Python 3.5+, которого тоже может не быть на устройствах. Хотя торрт и участвует в LBC, и поддержка Python 2 будет выпилена в 2020-м, нужно подумать на сколько критична поддержка <3.5.

@NecroKote
Copy link
Contributor

Мне идея резидентного torrt не нравится по следующим причинам:

  • основной функционал ни коим образом не требует "резидентности"
  • добавление резидентности ничего не дает с точки зрения UX
  • резидентность усложняет "deploy"
  • резидентность усложнит скедулинг (делать свой? делегировать cron'у ?)

ИМХО, прикрутить WEB API \ UI \ Realtime-bot's лучше путём отдельной реализации этих частей и склейки их с torrt как минимум на уровне python модулей. Т.е ядро и минимальный CLI - в базовом torrt, а всякие свистелки - отдельной обёрткой, использующей ядро на уровне модуля.

@toshka
Copy link
Contributor

toshka commented Feb 14, 2019

Я не очень вижу необходимость глобальной переработки в принципе. Те задачи, для которых нужен torrt он сейчас решает на 100%. Особенно с появлением возможности управлять им через Telegram.

Если начать придумывать чего не хватает, то, возможно, это удаление старых торрентов из списка отслеживания не только через консольного клиента. Но это можно решить небольшой доработкой бота.

Полноценный web UI лично мне кажется избыточным по следующим соображениям:

  1. torrt конфигурируется по сути один раз. Допускаю, что порог входа при конфигурации через web UI ниже, но мы можем получить ситуацию, при которой конфигурирование всех компонентов, необходимых для запуска web, будет сравнимо по сложности с конфигурированием torrt через консоль.

  2. в web интерфейсе, вероятно, будут отображаться:

    • список трекеров
    • сконфигурированный rpc (скорее всего он один)
    • список уведомляльщиков
    • список раздач, за которыми следит torrt

    По собственному опыту могу сказать, что за последние пару лет у меня поменялся только 1 трекер и список раздач. Ради этого "раздувать" приложение не вижу смысла, мы будем только занимать чужие ресурсы, и, как правильно отметил @idlesign, на маломощных NAS это может быть не очень круто.

  3. Для полноценной работы с web пользователю нужен внешний IP, он есть не у всех. В локальной сети можно и консоль на сервер открыть. А если под рукой только телефон/планшет, то я предпочту использовать Telegram, чем вбивать адрес в браузере, логиниться и что-то искать в web интерфейсе.

В целом я согласен с @NecroKote , torrt мне кажется сейчас самодостаточным, ядро + консольный клиент для управления решает задачи. Добавлять в ядро Django кажется перебором. API / web UI, если очень хочется, можно прикрутить сбоку.

@idlesign
Copy link
Owner Author

@NecroKote

  • основной функционал ни коим образом не требует "резидентности"

Смотря как определить «основной».

  • добавление резидентности ничего не дает с точки зрения UX

Как же, я вроде показал, что даёт (опосредовано через UI).

  • резидентность усложняет "deploy"

Имеешь в виду необходимость стартовать сервисом? Если пользователю не требуется веб-ui и другие плюшки, то CLI будет работать для него точно также как сейчас, необходимости запуска демона здесь нет.

  • резидентность усложнит скедулинг (делать свой? делегировать cron'у ?)

Если делать, то это будет из коробки на базе uWSGI.

Т.е ядро и минимальный CLI - в базовом torrt, а всякие свистелки - отдельной обёрткой, использующей ядро на уровне модуля.

Оно как раз то на то и выйдет

@toshka

Я не очень вижу необходимость глобальной переработки в принципе.

Так она и не будет глобальной, сейчас в торрте неплохо определены интерфейсы, так что потери минимальны, если вообще будут.

Если начать придумывать чего не хватает, то [...]

Ну, тут можно много чего придумать, скажем, если про UI: и фильтры про трекерам и по дате, и подтягивание доп. информации (КиноПоиск, скажем; подтягивание обложек из раздач), групповые действия под раздачами, управление шаблонами оповещений, и прочими настройками.

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

В идеале запуск веб-сервера должен осуществляться одной строкой. Разве только необязательная настройка порта и сертификата для ssl может что-то усложнить.

[...] мы будем только занимать чужие ресурсы [...]

Есть такое. Правда непонятно на сколько критично.

[...] я предпочту использовать Telegram, чем вбивать адрес в браузере, логиниться и что-то искать в web интерфейсе.

Это вполне вариант, хотя лично мне с ботами скучно %)

Добавлять в ядро Django кажется перебором [...]

Меня это тоже смущает. Просто так этот каркас использовать смысла нет, только если нужны его возможности (ORM, веб).

@djbios
Copy link

djbios commented Mar 20, 2019

Кто нибудь сейчас занимается разработкой web ui для торрта?

@idlesign
Copy link
Owner Author

@djbios Неа. Поле непаханое.

@idlesign
Copy link
Owner Author

idlesign commented Aug 30, 2020

Начиная с 0.14.0, появились средства для получения дополнительных данных со страниц раздач: заголовок, изображение. Эти данные можно будет использовать в UI.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

4 participants