Серверный рендеринг с помощью блендера и скрученных (Python)
Вопрос
Проект, на котором я работаю в настоящее время, в основном принимает изображение, а затем делает видео с помощью Blender из командной строки. На данный момент я использую Скрученный Чтобы справиться с запросами, но есть, безусловно, что я делаю не так, как не работает, как я бы хотел. Вы можете увидеть JIST программы здесь (Я отдал что-нибудь ненужное).
Blender Render выполняется, нередив подпроцесс (я знаю, может обрабатывать процессы) наряду с Питонский скрипт Чтобы настроить рендеринг и используйте изображение, предоставляемое в качестве текстуры.
Программа должна иметь возможность обрабатывать как можно больше соединений. На данный момент подпроцесс делает один из визуализации одновременно, но в идеале он будет проверять процессор / количество параллельных виндеров и настроить номер до оптимального. Каждый визуализация является пользователем, поэтому, как только пользователи рендерируют, они должны заставить их обратно (файл AVI).
Мой вопрос: скручен правильный выбор для этого? Есть ли другие варианты? Если нет, моя реализация недостаточной системы? Я был бы признателен за любые мысли или мнения на это!
Решение
Is Twisted the right choice for this?
- Возможно.
Are there other options?
- Да.
If not, is my implementation of the system flawed?
- Да. Это относится ко мне, что ваш позыв подпроцесса блокирует: p.wait()
Можно делать то, что звучит так, будто вы пытаетесь сделать в скрученном, но вы очень долгий путь от него.
Вам нужна контролируемая скорость, асинхронная очередь задач с веб-интерфейсом.
То, что у вас есть - это одиночная страница на одном резьбовом «сайте», которое не возвращает никакого HTML до завершения отправленного задания.
Это возможно в скрученном. Однако, вероятно, легче реализовать с использованием Django + Celerry.
Django: http://www.djangoproject.com/
Сельдерей: http://celery.github.com/celery/getting-starteded/introduction.html.
И учебник по аналогичной цели:
http://webcookies.org/blog/2009/09/10/rabbitmq-cemery-and-django/