我在Python2.6和Twisted 15.0.0上运行:
from twisted.python import usage
from twisted.web import resource, server, static
from twisted.application import internet
class Options(usage.Options):
optParameters = [
]
def makeService(options):
# this variation works
root_resource = static.File('/tmp')
# this variation doesn't
root_resource = resource.Resource()
root_resource.putChild("here", static.File('/tmp'))
site = server.Site(root_resource)
web_svc = internet.TCPServer(8000, site)
return web_svc
但是升级到Python3.7并更新到最新版本(18.7.0)之后,我http://localhost:8000/here一无所获
没有这样的资源
没有此类子资源。
找不到任何表达不同方式的扭曲文档或示例。
其他:
它可以正常启动服务,否则我看不到上面的内容。
出于复制目的, twisted / plugins / my_plugin.py 如下:
from twisted.application.service import ServiceMaker
svc = ServiceMaker("TEST_ONE",
"svc",
"Service",
"tstsvc"
)
并执行:
twist tstsvc
答案 0 :(得分:0)
神秘感解决了。
当然,这里再次是带有字符串处理功能的Python3。
root_resource.putChild(b"here", static.File('/tmp'))
在路径前面没有'b'的情况下,它从未匹配所键入的url。
思想:如果在此处传递了str,则putChild()api是否应该引发错误?似乎字节永远是正确的答案,并且是唯一可以匹配的东西