我想使用json格式的名称和网址来获取许多图像,就像这样:
{
"imagesInfo":[
{
"url":"https://upload.wikimedia.org/wikipedia/commons/b/ba/Flower_jtca001.jpg",
"fileName": "A",
}
]
}
然后从url下载它们并将图像保存在我的图像服务器中,但是当它接受一个请求并运行它时,无法同时运行其他请求并阻塞它们,直到第一个请求完成为止。代码,以便它可以接受请求并并行运行它们,我使用了Tornado框架,该框架在其文档中说是异步的,并且我使用了@ tornado.gen.coroutine,但是它没有用。我不想使用进程池和线程池,因为我之前对其进行过测试,并且占用了所有服务器资源并停止运行。这是我的FileHandler:
class FileHandler(BaseHandler):
@tornado.gen.coroutine
def prepare(self):
self.request.body = self.request.body.decode('utf-8')
self.json_args = json.loads(self.request.body)
@tornado.gen.coroutine
def post(self ,arg):
if arg == "bulkImageImport":
save_instance=SaveImage()
yield save_instane.save_image(self.json_args['imagesInfo'])
self.finish("done")
这是可在不同路径下运行的app.py文件:
(ImageRoute是在其中定义了不同路由的类。)
def make_app():
return tornado.web.Application([(r"/", MainHandler),
(ImageRoute.BLOB_IMAGE, imageHandler.ImageHandler),
(ImageRoute.BULK_IMAGE_IMPORT, FileHandler.FileHandler),])
if __name__ == "__main__":
app = make_app()
app.listen(config.PORT)
tornado.ioloop.IOLoop.current().start()
如果我将框架更改为django,是否可以解决问题?
我期待任何有用的解决方案。
谢谢