2013-11-12 2 views
0

Я получил шаблоны для динамической перезагрузки, но код контроллера не работает; Я должен убить и перезапустить процесс. Ниже приведен код, который я запускаю; Я запускаю его как 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() 

ответ

2

Если вы хотите, чтобы перезагрузить приложение Pyramid, я бы рекомендовал использовать Пастер, вместо вызова server.serve_forever()

Один простой способ сделать это, является использование строительных лесов пирамиды:

вы можете использовать леску проекта 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 

Где вы должны обернуть INIT код внутри основной функции и настройки перейдите в development.ini файл.

Смежные вопросы