我正在开发一个针对特定领域的图片托管网站。该网站使用 Django 制作。我目前计划在 Linode 上运行它。
到目前为止一切顺利。问题是:我需要对高分辨率图像执行非常耗费 CPU 的任务。我们谈论的是科学级计算,在 Linode 的 4 个 Xeon CPU 上可能需要长达 15 分钟。
我不确定 EC2 是否像这样工作,但以下场景是否引起了我的注意?
- 用户在网站上上传图片,该网站托管在 Linode 上
- 该应用程序(以某种方式?)请求 EC2 运行 CPU 密集型任务。
- EC2 启动新实例并使用提供的数据运行软件
- 数据以某种方式返回到 Web 应用程序
显然,我对这个东西的运作方式有很多疑问。有人能帮我填补这些疑问吗?
编辑:我忘了说我使用 celery 执行任务,使用 RabbitMQ 作为消息调度程序。我想知道是否可以在我的 Web 服务器上运行创建 celery 任务,然后实际在按需创建的 EC2 实例上运行它们。理想情况下,这还会处理相关方之间的通信协议(因为我将对 Web 服务器端进行 pickle)。
答案1
是的,EC2 似乎很适合您要做的事情。至于具体如何操作,我不熟悉 celery 和 RabbitMQ,但我认为这只是编写一些代码来根据需要处理 celery 中的作业的问题——这可能涉及从您的 Web 服务器检索数据以执行作业(使用 Web 服务 API 从数据库中检索)并将结果发送回去(再次通过您定义的 Web 服务 API)。