【问题标题】:Server-side rendering using blender and twisted (python)使用搅拌机和扭曲(python)的服务器端渲染
【发布时间】:2011-03-04 09:26:21
【问题描述】:

我目前正在处理的项目基本上是接收一张图像,然后从命令行使用搅拌器渲染一个视频。目前我正在使用Twisted 处理请求,但肯定有一些我做错了,因为它没有按照我想要的方式工作。您可以看到程序的 jist here(我已经删除了所有不必要的内容)。

搅拌器渲染是通过产生一个子进程(我知道 Twisted can handle processes)和一个 python script 来配置渲染并使用作为纹理提供的图像来完成的。

程序需要能够处理尽可能多的连接。目前,子进程一次只进行一次渲染,但理想情况下,它会检查 CPU/并行渲染的数量并将数量调整为最佳值。每个渲染都是用户自定义的,所以一旦用户渲染完成,他们应该得到他们的渲染(一个 avi 文件)。

我的问题是:Twisted 是正确的选择吗?还有其他选择吗?如果不是,我的系统实施是否存在缺陷?如果您对此有任何想法或意见,我将不胜感激!

【问题讨论】:

  • 我正在一个类似的项目中工作,使用搅拌机和 python 服务器,如果您对搅拌机内存或类似的东西有任何问题,我想现在。搅拌机是否始终在您的服务器中运行?或者你为每个客户启动搅拌机?
  • 我们每次想使用 blender 时都从命令行运行它。我们使用custom python scripts 来设置渲染、运行它并获得进度。我们使用 celery 和 RabbitMQ 对作业进行排队,这样一次只能运行一个作业。

标签: python rendering twisted blender


【解决方案1】:

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/

【讨论】:

  • Django 和 Celery 似乎是一个非常好的解决方案!我要试一试,然后回来报告。
  • 这正是我想要的。谢谢!
猜你喜欢
  • 2020-04-29
  • 2012-04-18
  • 2012-08-07
  • 1970-01-01
  • 2012-02-07
  • 2020-01-06
  • 1970-01-01
  • 2014-04-20
  • 2011-08-11
相关资源
最近更新 更多