从目录中提供静态内容¶
本示例的目的是向您展示如何从文件系统提供静态内容。首先,我们需要导入一些对象
Site
,一个IProtocolFactory
,它将监听服务器端口 (IListeningPort
) 连接到HTTPChannel
实现from twisted.web.server import Site
File
,一个IResource
,它将 HTTP 协议实现连接到文件系统from twisted.web.static import File
reactor
,它驱动整个过程,实际上接受 TCP 连接并将字节移入移出它们from twisted.internet import reactor
以及
endpoints
模块,它为我们提供了工具,除其他外,用于创建监听套接字from twisted.internet import endpoints
接下来,我们创建一个指向要提供服务的目录的 File 资源实例
resource = File("/tmp")
然后我们使用该资源创建一个 Site 工厂实例
factory = Site(resource)
现在我们将该工厂连接到一个 TCP 端口
endpoint = endpoints.TCP4ServerEndpoint(reactor, 8080)
endpoint.listen(factory)
最后,我们启动 reactor,以便它可以使程序工作
reactor.run()
就是这样。以下是完整的程序
from twisted.web.server import Site
from twisted.web.static import File
from twisted.internet import reactor, endpoints
resource = File('/tmp')
factory = Site(resource)
endpoint = endpoints.TCP4ServerEndpoint(reactor, 8080)
endpoint.listen(factory)
reactor.run()
额外示例!对于那些您不想编写新程序的时候,上面实现的功能是命令行 twistd
工具可以执行的操作之一。在这种情况下,命令
twistd -n web --path /tmp
将完成与上述服务器相同的事情。有关使用 twistd
的更多信息,请参阅 Twisted 核心文档中的 辅助程序。