Twisted适合构建多线程服务器吗?
我需要从数百个pop3邮箱中提取邮件,我想搭建一个稳定的服务器来完成这个任务。
请问使用twisted这个工具适合这个项目吗?
目前我简单的想法是先从一个pop3邮箱提取邮件,之后再从多个邮箱提取,但那样会是一个接一个的过程。
我想创建一个可以同时处理多个任务的服务器,也就是说它能同时进行多线程操作。
4 个回答
0
这个选择对于服务器来说不错,但根据你的描述,其实你是在寻找一个支持多线程的POP客户端。
Twisted是用来处理事件的,比如接收请求的,但你需要发送请求,所以在这种情况下,我担心Twisted的用处不大。
2
考虑到你大部分的POP3操作都是在进行网络输入输出,这正是Twisted表现出色的地方。这里你不是在使用多线程,而是在进行基于事件的异步套接字操作,这正是Twisted的强项。
所以,是的,Twisted非常适合这种类型的项目。它在客户端和服务器端的操作都很出色,创建一个新的异步TCP客户端几乎是小菜一碟,而且它默认就提供了一个POP3 TCP客户端。
7
Twisted是一个用Python写的网络框架,它是基于事件驱动的。简单来说,它特别适合用来开发需要处理网络的应用程序,因为它利用了异步和非阻塞的特性。它还支持线程,这在你无法使用异步非阻塞输入输出的情况下很有用。因为在网络输入输出操作中,大部分时间都是在等待。
这里有两种模型可以利用这个特性:一种是线程模型,你可以创建多个线程,每个线程完成一个任务;另一种是非阻塞输入输出模型,它允许一个进程通过交替处理多个任务来完成多个工作。Twisted特别适合第二种模型。
非阻塞模型
+--------------------------+
|task1 | wait period | comp|
+--------------------------+
+--------------------------+
|task2 | wait period | comp|
+--------------------------+
你可以用Twisted开发一个非常强大的服务器,它支持POP3和IMAP协议。
这里有一个例子,教你如何用Twisted构建POP3客户端。