我有点难以理解这三种框架之间的区别:
这三个框架可以同时运行代码,但使用不同的方式,线程/进程数或代码风格。这是我现在对区别的理解:
- Tornado/Twisted 使用一个I/O循环控制异步代码。这使得代码可以在单个线程上运行(如果您有非阻塞代码,则多个线程是无用的)
- Celery 使用基于任务的系统异步运行代码,代码本身仍然是同步的。存在一个主进程,能够将不同的任务分配给不同进程中的其他工作人员。
- Gevent 使用基于线程的系统并生成一个线程来处理不同的传入连接。
我现在的问题是:
- 我对这些框架的理解是否正确?
- 线程和进程之间的主要区别是不同线程使用相同的内存,而进程则不使用。一个进程通常在一个服务器核心上运行吗?(因此使得在小型服务器上实现Celery很困难)
- 如果我们谈论Web 应用程序和套接字:
Tornado/Twisted 能够接受(几乎)任意数量的套接字,因为它们使用异步代码并将请求排队在 I/O 循环中。
Celery/Gevent 能够做到这一点吗?它们是否需要生成新的进程/线程才能接受新的套接字?
我正在尝试弄清楚哪种技术最适合构建实时 Web 应用程序。