正确使用Peewee ORM池连接的方法

时间:2015-01-13 16:00:44

标签: python mysql wsgi peewee

我在Python WSGI网络应用程序中使用Peewee ORM。我一直遇到MySQL服务器“离开”的问题,所以我切换到了PooledMySQLDatabase。几个小时后我仍然会遇到服务器消失的问题..

根据文档,为了获得最佳性能,我必须通过调用.connect()和.close()来自行管理连接。我根本就没有这样做。

我添加了2个在每个请求之前和之后调用的装饰器,但这是正确的吗?

@pre_save()
def pre_save_handler(sender,instance,created):
    db.connect()
    logger.debug('Attempting to save %s' % instance)

@post_save()
def post_save_handler(sender, instance, created):
    db.close()
    logger.debug('%s was just saved' % instance)

这样做有什么陷阱吗?我应该将.connect()和.close()移动到我的应用程序中吗?

2 个答案:

答案 0 :(得分:1)

大多数WSGI框架为在请求之前和之后运行代码提供了某种钩子。我建议使用这些钩子连接/关闭。

查看以下文档:http://docs.peewee-orm.com/en/latest/peewee/database.html#adding-request-hooks

答案 1 :(得分:0)

在考虑了一两天之后,我意识到这是100%错误的做法。这对于SELECT查询来说根本不起作用。这些函数只在数据库存储上调用! 我已经在我的网络应用中添加了一个前置和后置处理器,现在它正常运行。