1

テンプレートを動的にリロードするようにしましたが、コントローラー コードはそうではありません。プロセスを強制終了して再起動する必要があります。以下は私が実行したコードです。として実行しpython app.pyます。

何を誤って構成し、コードを動的にリロードするにはどうすればよいですか?

if __name__ == '__main__':
    # configuration settings
    settings = {}
    settings['reload_all'] = True
    settings['debug_all'] = True
    settings['mako.directories'] = os.path.join(here, 'templates')
    #settings['db'] = os.path.join(here, 'tasks.db')
    # session factory
    session_factory = UnencryptedCookieSessionFactoryConfig('itsaseekreet')
    # configuration setup
    config = Configurator(settings=settings, session_factory=session_factory)
    # routes setup
    #config.add_route('list', '/')
    #config.add_route('new', '/new')
    #config.add_route('close', '/close/{id}')

    #config.add_route('hello', '/hello')
    config.add_route('meta', '/m/{mid}')
    # static view setup
    config.add_static_view('static', os.path.join(here, 'static'))
    # scan for @view_config and @subscriber decorators

    connection = pymongo.Connection()
    def add_db(request):
        #db = config.registry.db[db_url.path[1:]]
        #if db_url.username and db_url.password:
            #db.authenticate(db_url.username, db_url.password)
        db = connection["bricwall_pyramid"]["bricwall"]
        return db

    #def add_fs(request):
       #return GridFS(request.db)

    config.add_request_method(add_db, 'db', reify=True)
    #config.add_request_method(add_fs, 'fs', reify=True)

    config.scan()
    # serve app
    app = config.make_wsgi_app()
    server = make_server('0.0.0.0', 8080, app)
    server.serve_forever()
4

1 に答える 1

2

Pyramid アプリケーションをリロードする場合は、server.serve_forever() を呼び出す代わりに、paster を使用することをお勧めします。

これを行う簡単な方法の 1 つは、ピラミッドの足場を使用することです。

Starter プロジェクトの足場を使用できます。

pcreate -s starter MyProject

または、Sqlalchemy を使用します (ただし、pymongo を使用しているのを見たことがあるので、最初のものが最適な選択だと思います):

pcreate -s alchemy MyProject

これにより、デフォルトの MyProject アプリケーションが作成されるので、それをインストールする必要があります。

python setup.py develop

そしてそれを実行します:

pserve development.ini --reload

ここでよく説明されています:http://docs.pylonsproject.org/projects/pyramid/en/1.5-branch/narr/project.html

ただし、アプリケーションは次のように変更する必要があります。

def main(global_config, **settings)

    config = Configurator(settings=settings, session_factory=session_factory)
    # routes setup
    #config.add_route('list', '/')
    #config.add_route('new', '/new')
    #config.add_route('close', '/close/{id}')

    #config.add_route('hello', '/hello')
    config.add_route('meta', '/m/{mid}')
    # static view setup
    config.add_static_view('static', os.path.join(here, 'static'))
    # scan for @view_config and @subscriber decorators

    connection = pymongo.Connection()
    def add_db(request):
        #db = config.registry.db[db_url.path[1:]]
        #if db_url.username and db_url.password:
            #db.authenticate(db_url.username, db_url.password)
        db = connection["bricwall_pyramid"]["bricwall"]
        return db

    #def add_fs(request):
       #return GridFS(request.db)

    config.add_request_method(add_db, 'db', reify=True)
    #config.add_request_method(add_fs, 'fs', reify=True)

    config.scan()
    # serve app
    app = config.make_wsgi_app()
    return app

メイン関数内で初期化コードをラップする必要があり、設定は development.ini ファイルに移動します。

于 2013-11-12T18:40:15.640 に答える