V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
ltoddy
V2EX  ›  Python

关于 sanic 框架 listener 的一个问题

  •  
  •   ltoddy ·
    ltoddy · 2018-06-21 19:05:26 +08:00 · 2203 次点击
    这是一个创建于 2346 天前的主题,其中的信息可能已经有所发展或是发生改变。
    from sqlalchemy import create_engine
    from sqlalchemy.ext.declarative import declarative_base
    from sqlalchemy.orm import sessionmaker
    
    
    @app.listener('before_server_start')
    async def before_server_start(app, loop):
        # database config
        app.engine = create_engine(app.config['SQLALCHEMY_DATABASE_URI'], echo=app.config['SQLALCHEMY_TRACK_MODIFICATIONS'])
        app.Base = declarative_base(bind=app.engine)
    
        Session = sessionmaker(bind=app.engine)
        app.db_session = Session()
    
        app.Base.metadata.create_all()
    

    这是我的一段代码,listener('before_server_start') 在服务启动前运行, 我把 sqlalchemy 所必须的几个对象和类变成 app ( Sanic 的对象)的属性后, 当我想要在 models 中想要类似这样定义的时候:

    class User(app.Base)
    

    却报错。

    也就是说,模块加载的时间在 app.listener('before_server_start')运行之前。

    不知道有用 Sanic+sqlalchemy 你们怎么做的?

    文档给的一个 example。

    ltoddy
        1
    ltoddy  
    OP
       2018-06-21 19:18:43 +08:00
    有没有人知道怎么删帖,我想删除了,自己解决了。
    cszhiyue
        2
    cszhiyue  
       2018-06-21 21:05:43 +08:00 via Android
    应该考虑是怎么解决的给后人一点提示
    keysona
        3
    keysona  
       2018-06-21 21:07:04 +08:00
    清空内容
    转移节点至水
    点击下沉

    基本就可以了。
    WildCat
        4
    WildCat  
       2018-06-21 21:24:29 +08:00
    说个不相关的话题,sanic 并不好用,我自己的开源项目都想换 tornado 了。
    billgreen1
        5
    billgreen1  
       2018-06-22 00:18:11 +08:00
    @ltoddy 最讨厌你这样的,不会的时候发帖问,自己有解决方案了就藏着掖着
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2641 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 10:55 · PVG 18:55 · LAX 02:55 · JFK 05:55
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.