代码之家  ›  专栏  ›  技术社区  ›  mrj

Kubernetes共享临时存储以异步上载文件

  •  0
  • mrj  · 技术社区  · 5 年前

    跟随 this post this
    用户将图像上传到我的后端,设置如下:LB->Nginx入口控制器->Django(Uwsgi)。图像最终将被上传到对象存储器。因此,Django将临时将映像写入磁盘,然后将上载任务委托给异步服务(DjangoQ),因为上载到对象存储可能会非常耗时。这里有一个问题:由于我的Django副本和DjangoQ副本都是独立的pod,因此DjangoQ pod中没有该文件。像往常一样,任务队列由redis代理管理,任何随机的DjangoQ pod都可能使用该任务。

    上述帖子基本上提到了两种解决方案:

    -解决方案2:Django服务应该通过一个API使文件可用,DjangoQ将使用这个API从另一个pod访问该文件。这看起来不错,但我不知道如何进行。。。我应该创建第二个Django/uwsgi应用程序作为一个side容器来监听另一个端口并发送一个HTTPResponse文件吗?文件可以流式传输吗?

    1 回复  |  直到 5 年前
        1
  •  2
  •   coderanger    5 年前

    第三种选择:完全不要在应用程序中移动文件数据。让用户直接上传到对象存储。这通常意味着制作一个API,返回一个在几分钟内有效的预签名上传URL,用户上传文件,然后再调用一次,让您知道上传已经完成。然后您的异步任务可以下载它并执行任何操作。

    否则,这两个选项是正确的。对于选项2,内部Minio服务器非常常见,因为Django在处理大型文件blob时非常慢。