2017-07-17 15 views
0

CherryPyを使用して静的ファイルを提供しようとしていますが、できません。私はチュートリアルを見てきましたが、そのように設定することは適切に動作していません。CherryPyの静的ディレクトリにサービス

このすべては、Python 3.4に

を使用しているコンフィグ

config = { 
     '/ws': { 
      'tools.websocket.on': True, 
      'tools.websocket.handler_cls': ChatWebSocketHandler, 
      'tools.websocket.protocols': ['toto', 'mytest', 'hithere'] 
     }, 
     '/assets': { 
       'tools.staticdir.on': True, 
       'tools.staticdir.dir': constants.TEMPLATE_PATH 
     }, 
    } 

この

app_root = Root(args.host, args.port, args.ssl, ssl_port=args.ssl_port) 
cherrypy.quickstart(app_root, '', config=config) 

コンスタントパスが

TEMPLATE_PATH = os.path.join(os.path.dirname(os.path.realpath(__file__)),"assets/") 
であるように私はCherryPyにを起動しています

私は上記の定数の代わりにassets//assets/のようなパスも使用しようとしました。

問題は誰も認識せず、常に404エラーを出します。

+0

上記の設定が有効です。私は自分のアプリの中にほとんど同じものを持っています。 tools.staticdir.dirには絶対パスを使用する必要があります。唯一の違いは、cherrypy.tree.mount(Root()、 "/"、config)、次にcherrypy.engine.start()、次にquickstartの代わりにcherrypy.engine.block()を使用することです。権限が正しいことを確認しましたか? –

答えて

1

私はあまりにもこれを設定することができませんでした。 CherryPyのいくつかの初期バージョンでは有効にならないかもしれない複数のサブドメインがある複雑なセットアップがありますが、これは簡単なクイックスタート構成で動作することを確認していません。しかし実際に私のために働くセットアップのキーラインは、あなたがマウントするwebserviceオブジェクトの下にconfig行を置くことです。私は、リソースの前にクラス定義内の静的ディレクトリを定義するconfig dictを配置します。私はあなたが静的なディレクトリを、オブジェクトではなく特定のリソースではなく、構成辞書に定義したように見えます。だから、おそらくあなたのホスティングサービスの対象にしてみてください:

class WebService(object): 
    _cp_config = { 
        'tools.staticdir.on': True, 
        'tools.staticdir.dir': '/path/to/serve/static/files/from' 
        } 

    @cherrypy.expose 
     def index(self): 

    [ ...additional resource definitions, etc ...] 

その後、後に:

my_cp_app = 
    cherrypy.tree.mount(subDomain.WebService(), 
         '/subdomainFileLocation', 
         subdomainConfigDict) 

    cherrypy.quickstart(config=domainConfig) 

私はあなたは、Python 3でPython 2.7 + CherryPyは-8.1の上の私にとってこれ以上の作品を働いている知っています。 2。これが参考になることを願っています。

関連する問題