2017-11-20 21 views
0

私はこれと一緒にどこにも行かないので、私がレンガの壁に突っ込んでいるように感じ、私は信じて、簡単な仕事。cherrypyで複数のURLパスを生成するにはどうすればよいですか?

私は '/ path/to/url'のようなURLでURLを生成しようとしていますが、複数のStackOverflow Q & Aを参照すると、cherrypyの公式ドキュメントがあります。問題。ここで

は、これまでの私のコードです:

import details 
import input_checker as input 
import time 

import cherrypy 

class Index(object): 

    @cherrypy.expose 
    def input(self): 
     return input.check_input() 

    @cherrypy.expose 
    def stream(self): 
     while True: 
      return 'Hey' 
      #return input.check_input() 
      time.sleep(3) 

if __name__ == '__main__': 
    index = Index() 
    cherrypy.tree.mount(index.stream(), '/input/stream', {}) 
    cherrypy.config.update(
     {'server.socket_host': '0.0.0.0'}) 
    cherrypy.quickstart(index) 

ので、基本的に、私はhttp://127.0.0.1:8080/input/streamを訪問することができるようにしたい、と私は指定された結果で返されます。

このコードを実行した後、複数のバリエーションがありますが、まだ404エラーが見つからないため、私は何をする必要があるのか​​分かりません。

私がスキミングした可能性のあるヒントやサポート文書はありますか?

ありがとうございます。

答えて

1

ここにはいくつかの問題がありますが、実際にはMethodDispatcherを使用するのはなぜですか?

cherrypy.tree.mount(index.stream(), '/input/stream', your_config) 

ノート/input/stream代わりの/stream:あなたがそのようにマウントする必要が/input/streamstream機能を提供するために

MethodDispatcherを使用しているため、このエンドポイントにGETが許可されていないため、エンドポイントが405になる可能性があります。つまり、MethodDispatcherビットを削除するだけです。

しかし、あなたは、あなたがそのような何かに少しリファクタリングする必要がありますMethodDispatcher必要がない場合:

class Stream: 
    exposed = True # to let cherrypy know that we're exposing all methods in this one 

    def GET(self): 
     return something 

stream = Stream() 
cherrypy.tree.mount(stream , '/index/stream', 
    {'/': 
     {'request.dispatch': cherrypy.dispatch.MethodDispatcher()} 
    } 
) 

はまたCherryPyに木にそれらを実装する際に、実際にあなたのメソッドを呼び出さないようにしてください、名前だけで渡します関数/クラスの

+0

申し訳ありませんが、私はMethodDispatcherを使用するつもりはありません。私はそれが何を意味しているか正確にはわからないが(私はすべてのチュートリアルを終えた)、しかし私はそれについてもっと磨かなければならないと思う。とにかく、私はメソッドをマウントしましたが、 'your_config'のために何を置くべきかはわかりません。私は私の質問を現在のコードに編集しました。 – juiceb0xk

+0

@ juiceb0xk空の設定は、 '{}'をそこに置き、 'index.stream()'の代わりに 'index.stream'を実行してください。 – user3012759

+0

素晴らしいです。私はこの情報を公式の文書と相関させることができます。迅速な情報をありがとう:) – juiceb0xk

関連する問題