我明白龙卷风是单线程和无阻塞服务器,因此请求被处理顺序(使用IO操作事件驱动方式时除外)。
有一种方法以处理多个请求并行在龙卷风为正常(非IO)执行。 因为我需要跨请求公用的内存空间,我不能多叉过程。
如果它不能请建议对我来说,它可以处理并行请求其他蟒蛇服务器,同时还支持WSGI。
我明白龙卷风是单线程和无阻塞服务器,因此请求被处理顺序(使用IO操作事件驱动方式时除外)。
有一种方法以处理多个请求并行在龙卷风为正常(非IO)执行。 因为我需要跨请求公用的内存空间,我不能多叉过程。
如果它不能请建议对我来说,它可以处理并行请求其他蟒蛇服务器,同时还支持WSGI。
如果你是真正将要处理的是计算密集型多个同时请求,并且要做到这一点在Python,那么你需要一个多进程的服务器,而不是多线程。 CPython的具有全局解释器锁(GIL),以防止多个线程同时执行Python字节码。
大多数Web应用程序很少做计算,而是在等待I / O,无论是从数据库或磁盘,或从其他服务器上的服务。 要确保你需要丢弃龙卷风之前处理计算密集型请求。
在回答你的问题实际上取决于这些计算绑定线程多久会被运行。 如果他们是短期运行,并处理它们的速度至少在他们到达的速率相匹配,那么龙卷风将被罚款。 这确实是单线程的,但它确实很好地进行缩放。
如果您的计算密集型请求是长期运行的,然后使用一个线程服务器不一定会因为帮助,因为斯内德尔德已经指出的那样,GIL将是一个瓶颈。
如果你能够放松其在所有请求相同的内存空间,那么你可以考虑与运行龙卷风的限制PyZMQ ,因为它提供了运行多个龙卷风后端,由单一龙卷风实例门前的方式。 这使您可以继续使用龙卷风整个解决方案。 见PyZMQ的web.zmqweb模块以获取更多信息。