需求:web 应用,有几个非常耗时任务(基于深度学习算法,时间复杂度高)需要通过分发请求任务到服务器结点 A、B、C 上,提交任务时需要文件(数据集),执行完后生成文件,需要将 A、B、C 结果文件统一存放在 A 上
框架:本人使用 Django+Celery+rabbitmq 进行任务分发,问题在于 django 接收的 request 中 FILE 如何传递给 rabbitmq,而执行完任务后结果文件如何写回到 A 中?
配置
A B C: broker: amqp://A backend: amqp://A
A broker B: worker C: worker
相关代码:
celery: A demo/demo/celery.py
A demo/web/view.py
def handle_upload_como(request):
...
dataset = request.FILE.get("data", None)
...
//这里传递文件 dataset 不能成功
res = taskA.delay(dataset, args)
res.ready()
//获取结果文件 resf
//写入 resf 到 A 结点的统一存储路径中
...
A demo/web/task.py
@share_app
def taskA(data, args):
...
run(data,args)
...
//result 写在路径: /var/www/result/中,存储结点为当前执行任务结点
//如何返回 result 结果
return 'ok'
若上述配置有误,也请多多指正,上述问题应如何解决呢?
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.