Страница 1 из 1

Запрос статистики рендера для сторонних интеграций

Добавлено: Вс сен 17, 2017 4:35 am
paulwinex
Предыстория
Для некоторых "личностей" интерфейсы AFWatch и WEB GUI слишком перегружены и они хотят что-то более минималистичное и понятное. К тому же таким "личностям" не хотелось бы давать доступ на какое-либо изменение, достаточно только информации на посмотреть. Потому принято решение сделать для них отдельный GUI с минимальным количеством информации.
Задача
Нужно сделать опрос сервера чтобы получить информацию о задачах конкретного пользователя, включая прогресс каждого таска.
Что пробовали
После немногословного хелпа (http://cgru.info/afanasy/cli) я отправился смотреть хелп по afcmd Там из самого полезного оказался флаг jlist, но он выдаёт все задачи вообще, включая системные афанасиевские. Нужно отфильтровать по юзеру. Ок, пишем

Код: Выделить всё

afcmd h ujobs
ujobs [id] Request a list of jobs of user with given id.
Почти то что нужно, только не понятно что за id? По имени юзера не прокатило, пустой список. Значит это некий id юзера?
Вопрос
Что за id юзера или чего-то еще в команде ujobs?
Вопрос 2
Получив задачи пльзователя потребуется выяснить прогресс каждого таска. Начал было с tlog/tout

Код: Выделить всё

afcmd h tout
tout [jobid] [block] [task] [start] Get task log.
Если jobid и block почти понятно, то осталные параметры не очень. Хорошо бы в хелп написать более подробно или примеры добавить.
Спасибо.

Re: Запрос статистики рендера для сторонних интеграций

Добавлено: Вс сен 17, 2017 10:17 am
Timur
Здравствуйте.
Если вы хотите написать GUI, лучше не afcmd ковырять, а JSON API.
Примеры тут: https://github.com/CGRU/cgru/tree/master/examples/json

Кстати, afcmd просто сам посылает теже json объекты, которые просто в него вкомпилены.
А чтобы поянть как работет afwatch или webgui, можно посмотреть из сетевой лог.
Там вы увидите тот же JOSN.
В webgui для этого надо открыть нижнюю панель - там кнопка Log.
AfWatch принтит обимен JSON-ом с сервером в stdout. Запустите его в терминале под линухом - увидите. Под виндой, к сожалению, так просто не посмотришь, честно говоря даже не знаю как, не нужно было.
Т.е. делаете нужно действие или запрос, смотрите какой для этого был отправлен объект серверу.

Очень вам советую писать не с нуля, а взять тотже афвоч, если вы хотите на C++ Qt, или WebGUI.
Люди, пишущие AFermer, так и сделали.
Но моё мнение что проще и удобнее WebGUI (HTML5 JavaScript сейчас в переди планеты всей в плане GUI, и самый простой).
Можете ещё попробовать на PyQt/PySide написать.

Со временем (после рендер-пулов и job-пулов), я планирую сделать authentication пользователей в афанасии.
Будет больше настроек по правам и видимости. Можете просто подождать пару лет и не делать ничего ))

Re: Запрос статистики рендера для сторонних интеграций

Добавлено: Вс сен 17, 2017 10:30 am
paulwinex
По JSON понял, так и сделаю тогда. Про логи спасибо, на убунте какраз работаю, проверю.
Делать придется с нуля потому что встраиваю эту статистику в готовый проект и там нужно минимальное количество инфы, список задач и рпогресс. Кстати тоже JS фреймворки и WEB GUI. Мне лишь требуется отправить запрос в afserver и както отобразить это в интерфейсе максимально минималистично.
В общем спасибо, попробую, отпишу что вышло и как.

Re: Запрос статистики рендера для сторонних интеграций

Добавлено: Вс сен 17, 2017 11:01 am
Timur
Да, кстати.
И ВебГУИ и АфВоч регистрируются на сервере:
https://github.com/CGRU/cgru/blob/maste ... er.js#L172
https://github.com/CGRU/cgru/blob/maste ... st.cpp#L28
А потом получают events (изменения).
Лучше так же и делать.

В ответе на запрос на регистрацию придёт и id монитора и uid пользователя.
Но для начала, если ГУИ простое, можете просто сначла запростить всех пользователей.
Там же будут их uids. А потом не подвисываться на события, а просто запрашивать список задач по uid пользователя.
Так будет проще workflow.

Но тот "куртой" workflow экономнее. Так как если изменений нет, то вы ничего и не запрашиваете.
А "простой" workflow должен будет запрашивать всё периодически, каждый раз, как вы захотите рефрешить ГУИ.

Re: Запрос статистики рендера для сторонних интеграций

Добавлено: Вс сен 17, 2017 11:32 am
paulwinex
Как оказалось, всё что нужно мне уже реализовано в классе af.Cmd, думаю просто его заюзаю и всё.
В случае если потребуются эвенты наверное придется переделать, но пока что всё надо сделать максимально просто.
Периодичность опроса у меня 10 сек или даже больше, для начала пойдет.
Спасибо за подсказки.

Re: Запрос статистики рендера для сторонних интеграций

Добавлено: Вс дек 03, 2017 4:25 pm
paulwinex
Ищу способ получать статистику по всем таскам в отдельности.
Требуются такие даные:


- прогресс конкретного таска
- превью рендера
- путь к готовому файлу рендера (parsed_files)
- сколько времени рендерится таск
- рассчетное время окончания рендера (вероятно можно рассчитать исходя из полученных данных)


В классе af.Cmd нужной функции не нашел и собрал вот такую, которая, вероятно, вернет то что надо (пример отсюда https://github.com/CGRU/cgru/blob/maste ... files.json)

Код: Выделить всё

...
cmd = af.Cmd()
cmd.data['type'] = 'jobs'
cmd.data['mode'] = 'files'
cmd.data['block_ids'] = [block['id']]
cmd.data['task_ids'] = range(block['task_num'])
cmd.data['ids'] = [job['id']]
cmd.action = 'get'
result = cmd._sendRequest()
Но есть две проблемы.
1. Эта команда на винде приводит к ошибке, описанной тут https://github.com/CGRU/cgru/issues/391, в результате приходится искать другой способ
2. Там только превью и не видно финального рендера, хотя он досчитан на 100%. Опять приходится искать другой сопосб

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

Re: Запрос статистики рендера для сторонних интеграций

Добавлено: Вс дек 03, 2017 8:23 pm
Timur
А это тема не тоже самое?
viewtopic.php?p=336#p336
Сделайте из гуёв то что вам надо и смотрите какой json посылается серверу.
И я бы сильно не уповал на af.Cmd, это не API, он просто решает какие-то CGRU-шные нужды, по большей части Кипер-а.
Там нет и никогда не будет всего, для этого есть API.
Вы посмотрите как устроен af.Cmd, там ничего особенного.

Re: Запрос статистики рендера для сторонних интеграций

Добавлено: Вс дек 03, 2017 8:26 pm
paulwinex
А это тема не тоже самое?
viewtopic.php?p=336#p336
Да, вопросы сошлись в одну тему) Я еще буду копать по совету выше, спасибо.