Ash*_*aka 1 python django asynchronous django-rest-framework python-asyncio
我在 python 3.7 上运行 django 2.2.3。我想要一个带有 asyncio 的解决方案,以便 api 可以只调用异步函数并返回响应,而无需等待我们使用 jquery Promise 执行操作的方式。定义my_coro只是举例。我将运行moviepy通常需要 40-50 秒才能完成的功能。我不希望 api 等待那么长时间才能发送响应。我也对如何处理线程池感到困惑。这里如何使用线程池呢?因为我也打算让电影迭代更快。那么如何创建一个处理调用的池my_coro呢?
async def my_coro(n):
print(f"The answer is {n}.")
async def main():
await asyncio.gather(my_coro(1),my_coro(2),my_coro(3),my_coro(4))
class SaveSnaps(APIView):
def post(self, request, format = None):
if request.user.is_anonymous:
return Response({"response":"FORBIDDEN"}, status = 403)
else:
try:
asyncio.run(main())
return Response({"response": "success"}, status = 200)
except Exception as e:
return Response({'response':str(e)}, status = 400)
Run Code Online (Sandbox Code Playgroud)
更新:
我尝试使用芹菜。但由于我不会使用周期性任务,实际上我需要异步接收 blob 数组作为参数的方法。celerytask.delay给我一个错误,因为任务需要可序列化的参数。所以我回到了这一点。我不确定我是否应该坚持使用线程解决方案或其他解决方案。
更新:我忘了分享我最后做了什么。我转移到celery. 但由于预期celery,我将保存部分移至同步方法,该方法完成后,将 moviepy 任务移交给运行任务。task.delayserialized paramsblobcelery
| 归档时间: |
|
| 查看次数: |
4329 次 |
| 最近记录: |