gpt4 book ai didi

python - 如何使用 Twisted 运行 Klein?

转载 作者:行者123 更新时间:2023-12-01 03:58:34 25 4
gpt4 key购买 nike

我正在尝试使用twisted运行klein,这样我就可以在不同的路径上运行twisted脚本(例如:example.com/example1example.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.CannotListenError: Couldn't Listen on any:80: [Errno 98] 地址已在使用中。对克莱因来说很陌生,我不确定它是如何工作的,有人能告诉我我做错了什么吗?谢谢!

最佳答案

您得到的这个异常似乎相当清楚,它说:

Couldn't listen on any:80: [Errno 98] Address already in use.

当您尝试使用的端口号已被某些其他服务使用时,就会发生这种情况。该其他服务可以是 Twisted 以外的服务,也可以是两个 Twisted 服务。我假设你没有任何其他东西在端口 80 上监听(例如 nginx 或 apache 或其他一些 Web 服务器,请注意 80 是默认 HTTP 端口,因此许多服务可以在那里监听),并且你的问题是由启动两个端口引起的扭曲的网络服务。

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

run("My_IP_Address", 80)

启动一项服务监听端口 80。

在/example 路由上收到请求后,您尝试在同一端口上启动另一个服务:

site = server.Site(proxy.ReverseProxyResource('www.example.com', 80, b''))
reactor.listenTCP(80, site)
reactor.run()

这没有逻辑意义,你不能让两个服务在同一个端口上运行。这就是您收到此异常的原因。另外,您对reactor.run()的调用是无用的,从klein导入的run()已经启动了reactor。

如果您确实需要在某个请求后启动某些服务器(这似乎是非常不寻常的用例),请在不同的端口上启动它。但也许你should simply start with官方文档和示例有吗?

关于python - 如何使用 Twisted 运行 Klein?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37013869/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com