我有一个接收图像的Web API,并将其传递给另一个异步服务。然而,在通过之前,如果我进一步使用PIL缩小它。
我的代码看起来像那样(简化,跳过不相关的细节):
def render_POST(self, request):
pil_image = Image.open(request.content)
pil_image.thumbnail((640,640), Image.ANTIALIAS)
outfile = StringIO()
pil_image.save(outfile, "JPEG")
do_something_async_and_write_result(outfile)
return NOT_DONE_YET
有没有一种方法可以让它异步而不会过度设计*它?
* 我会考虑设置一个仅用于过度工程的消息队列服务
答案 0 :(得分:1)
如果给出了线程安全(关于PIL以及如何使用它),您可以使用deferToThread:
https://twistedmatrix.com/documents/current/api/twisted.internet.threads.html
增强配方,感谢Calderone