2016-05-03 9 views
1

私はねじれた状態でkleinを実行しようとしていますので、別々のパスでねじれたスクリプトを実行できます(exp:example.com/example1example.com/example2)。だから私は、簡単なスクリプトを作っ:Kleinをねじれた状態で走らせるにはどうすればいいですか?

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] Address already in use.誰が何のことを教えてもらえ、私はクラインに非常に新しいです、と私はそれがどのように動作するかわからないんだけど私は間違っているのですか?ありがとう!あなたが取得している

答えて

2

この例外は、それが言う、かなり明確なようだ:

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

あなたが使用しようとしているポート番号は、すでにいくつかの他のサービスで使用されたときにそれが起こります。この他のサービスは、Twistedサービス以外のものでもTwistedサービスでもかまいません。私はあなたがポート80で聞いているものは何も持っていないと仮定しようとしています(例えば、nginxやapache、あるいは他のWebサーバー、80はデフォルトHTTPポートなので、多くのサービスがそこで聞くことができます)ねじれたウェブサービス。

あなたのケースでは、1つのポートでリッスンする2つのサービスを開始しようとしています。つのサービスは、あなたがこの同じポートで別のサービスを開始しようとしている/例のルート上に要求を受信した後、ポート80

に聞いて

run("My_IP_Address", 80) 

開始:

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

これは、ことはありません論理的な意味では、同じポート上で2つのサービスを実行することはできません。このため、この例外が発生します。また、reactor.run()への呼び出しは役に立たず、kleinからインポートされたrun()はすでにreactorを開始しています。

いくつかのリクエストの後にいくつかのサーバーを起動する必要がある場合(これは非常に珍しい使用例のようです)、別のポートで起動してください。しかし、おそらくあなたはshould simply start with公式の文書とその例ですか?

関連する問題