我看到了我的问题的一些变体,但不完全是我想要的,因此打开了一个新的问题。在
我有一个Flask/Gunicorn应用程序,每个请求都会在一个存储中插入一些数据,从而启动索引工作。索引的长度是主数据写入的2-4倍,我希望以异步方式来减少响应延迟。在
对于一个大型请求体,总的请求生命周期为100-150ms。在
我想了一些方法来做到这一点,即尽可能节省资源:
subprocess.Popen
。这可能是一条很好的路线,但我的瓶颈是I/O,所以线程可以更高效。在ThreadPoolExecutor
同时启动多个进程,但我只需要生成一个额外的任务,然后立即返回而不必等待结果。在asyncio
?这也是我不知道如何适用于我的情况。asyncio
始终有一个阻塞调用。在欢迎提出任何建议!在
谢谢。在
实际上,我应该更好地阅读Python手册中关于并发性的部分:
threading
模块正是我所需要的:https://docs.python.org/3.5/library/threading.html我用一些虚拟睡眠代码确认了子线程即使在Flask请求完成之后也会完成。在
芹菜将是你最好的选择-这正是它的用途。在
如果您需要引入依赖项,那么拥有依赖项并不是一件坏事。只要你没有不必要的依赖。在
不过,根据您的体系结构,可能会提供更高级和锁定的解决方案。如果您使用的是AWS,那么可以通过触发awsns通知来启动AWS Lambda函数,并让它处理它需要做的事情。天涯海角。在
相关问题 更多 >
编程相关推荐