Использование Django в качестве графического интерфейса для долгого процесса Python - PullRequest
0 голосов
/ 17 мая 2018

Это вопрос об архитектуре.Скажем, у меня длительный процесс на сервере, например, машинное обучение в середине обучения.Теперь, когда я работаю на внешней машине, мне бы хотелось иметь инструмент для быстрого просмотра результатов.Поэтому я подумал, что лучшим способом было бы иметь веб-сайт, который быстро подключается к процессу, например, используя RPC для отображения результатов, так как это позволяет мне всегда регистрироваться. Теперь вопрос заключается в том, как в представлении Django собирать информацию из процесса сервера.:

1) Использование вызовов RPC, таких как rpyc, непосредственно в представлениях?

2) Использование какой-либо очереди сообщений, такой как сельдерей?

3) Или полностьюиначе я не вижу?

1 Ответ

0 голосов
/ 17 мая 2018

Есть как минимум 2 возможных способа сделать это.

  1. Реализуйте свою функцию обновления данных в виде представления и перейдите к ней с помощью ajax (sync) + javascript timer.После того, как вы посещаете страницу, содержащую эти js, она будет автоматически извлекать ваши данные и обновлять страницу. Однако это решение не работает, когда вам необходимо записать все данные с заданной частотой: ajax / view выполняется только при открытой веб-странице.

  2. Используйте очередь сообщений, как подсказывает selcuk. Помимо сельдерея, APscheduler также является хорошим выбором, поскольку его проще устанавливать и использовать. Вы можете реализовать очередь задач (как модальную) со статусом (очередь / выполнено / остановлено / что угодно). как поле) и проверяйте их с нужной вам частотой, сохраняйте полученную дату и выполняйте все остальные действия.

...