Python 我如何与twisted一起运行Klein?

Python 我如何与twisted一起运行Klein?,python,python-3.x,proxy,twisted,klein-mvc,Python,Python 3.x,Proxy,Twisted,Klein Mvc,我正在尝试使用twisted运行klein,因此我可以在不同的路径上运行twisted脚本(exp:example.com/example1,example.com/example2)。所以我做了一个简单的脚本: from klein import run, route, Klein from twisted.internet import reactor from twisted.web import proxy, server from twisted.python import log

我正在尝试使用twisted运行klein,因此我可以在不同的路径上运行twisted脚本(exp:
example.com/example1
example.com/example2
)。所以我做了一个简单的脚本:

from klein import run, route, Klein
from twisted.internet import reactor
from twisted.web import proxy, server
from twisted.python import log

@route('/example')
def home(request):
    site = server.Site(proxy.ReverseProxyResource('www.example.com', 80, b''))
    reactor.listenTCP(80, site)
    reactor.run()

run("My_IP_Address", 80)

但每当我运行此脚本时,都会出现错误:
twisted.internet.Error.cannotlisten错误:无法侦听任何已在使用的:80:[Errno 98]地址。
我对Klein非常陌生,不知道它是如何工作的,有人能告诉我我做错了什么吗?谢谢

你得到的这个例外似乎相当清楚,它说:

Couldn't listen on any:80: [Errno 98] Address already in use.
当您尝试使用的端口号已经被其他一些服务使用时,就会发生这种情况。另一个服务可以是Twisted以外的服务,也可以是两个Twisted服务。我将假设您在端口80上没有任何其他侦听器(例如,nginx或apache或其他一些web服务器,请注意,80是默认的HTTP端口,因此许多服务可以在那里侦听),并且您的问题是由启动两个twisted web服务引起的

在您的情况下,您正试图启动两个服务,监听一个端口

run("My_IP_Address", 80)
在端口80上启动一个侦听服务

在收到/example route上的请求后,您正试图在此同一端口上启动另一项服务:

site = server.Site(proxy.ReverseProxyResource('www.example.com', 80, b''))
reactor.listenTCP(80, site)
reactor.run()
这在逻辑上没有意义,不能在同一端口上运行两个服务。这就是为什么会出现此异常。另外,对reactor.run()的调用也没有用,从klein导入的run()已经启动了reactor

如果您确实需要在某个请求之后启动某个服务器(这似乎是非常不寻常的用例),请在不同的端口上启动它。但也许你有官方文件和例子