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

Ответить
paulwinex
Сообщения: 83
Зарегистрирован: Пт июл 14, 2017 9:50 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 почти понятно, то осталные параметры не очень. Хорошо бы в хелп написать более подробно или примеры добавить.
Спасибо.
Аватара пользователя
Timur
Site Admin
Сообщения: 178
Зарегистрирован: Вс июл 09, 2017 4:59 pm
Откуда: Королёв
Контактная информация:

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

Сообщение 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 пользователей в афанасии.
Будет больше настроек по правам и видимости. Можете просто подождать пару лет и не делать ничего ))
Тимур Хайрулин
CGRU 3.3.1 Ubuntu 22.04LTS, MS Windows 10 (clients only).
paulwinex
Сообщения: 83
Зарегистрирован: Пт июл 14, 2017 9:50 am

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

Сообщение paulwinex »

По JSON понял, так и сделаю тогда. Про логи спасибо, на убунте какраз работаю, проверю.
Делать придется с нуля потому что встраиваю эту статистику в готовый проект и там нужно минимальное количество инфы, список задач и рпогресс. Кстати тоже JS фреймворки и WEB GUI. Мне лишь требуется отправить запрос в afserver и както отобразить это в интерфейсе максимально минималистично.
В общем спасибо, попробую, отпишу что вышло и как.
Аватара пользователя
Timur
Site Admin
Сообщения: 178
Зарегистрирован: Вс июл 09, 2017 4:59 pm
Откуда: Королёв
Контактная информация:

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

Сообщение 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 должен будет запрашивать всё периодически, каждый раз, как вы захотите рефрешить ГУИ.
Тимур Хайрулин
CGRU 3.3.1 Ubuntu 22.04LTS, MS Windows 10 (clients only).
paulwinex
Сообщения: 83
Зарегистрирован: Пт июл 14, 2017 9:50 am

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

Сообщение paulwinex »

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

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

Сообщение 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, путаюсь в исходниках и количестве информации, возможно ответ очевиден, но я не сопособен его увидеть(
Аватара пользователя
Timur
Site Admin
Сообщения: 178
Зарегистрирован: Вс июл 09, 2017 4:59 pm
Откуда: Королёв
Контактная информация:

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

Сообщение Timur »

А это тема не тоже самое?
viewtopic.php?p=336#p336
Сделайте из гуёв то что вам надо и смотрите какой json посылается серверу.
И я бы сильно не уповал на af.Cmd, это не API, он просто решает какие-то CGRU-шные нужды, по большей части Кипер-а.
Там нет и никогда не будет всего, для этого есть API.
Вы посмотрите как устроен af.Cmd, там ничего особенного.
Тимур Хайрулин
CGRU 3.3.1 Ubuntu 22.04LTS, MS Windows 10 (clients only).
paulwinex
Сообщения: 83
Зарегистрирован: Пт июл 14, 2017 9:50 am

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

Сообщение paulwinex »

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