我目前正在处理的项目基本上是一个图像,然后使用命令行中的blender渲染视频。目前我正在使用Twisted来处理请求,但肯定有些事情我做错了,因为它没有按照我的意愿行事。你可以看到程序的here(我已经删除了任何不必要的东西)。
通过生成子进程(我知道Twisted can handle processes)和python script来配置渲染并使用作为纹理提供的图像来完成混合器渲染。
程序需要能够处理尽可能多的连接。目前,子进程一次执行一次渲染,但理想情况下,它会检查CPU /并行渲染的数量,并将数量调整到最佳。每个渲染都是为用户定制的,因此一旦用户渲染完成,他们就应该重新渲染它们(avi文件)。
我的问题是:Twisted是正确的选择吗?还有其他选择吗?如果没有,我的系统实施是否有缺陷?我将不胜感激任何想法或意见!
答案 0 :(得分:3)
Is Twisted the right choice for this?
- 也许吧。
Are there other options?
- 是的。
If not, is my implementation of the system flawed?
- 是的。在我看来,您的子进程调用是阻塞的:p.wait()
有可能做出你在Twisted中尝试做的事情,但距离它还有很长的路要走。
您需要一个带有Web前端的速率控制的异步任务队列。
您所拥有的是单个线程“网站”上的单页,在提交的作业完成之前不会返回任何HTML。
这可能是扭曲的。然而,使用django + celery实现它可能更容易。
Django:http://www.djangoproject.com/
芹菜:http://celery.github.com/celery/getting-started/introduction.html
以及类似目的的教程:
http://webcookies.org/blog/2009/09/10/rabbitmq-celery-and-django/