Python/Django 1.5 DatabaseWrapper线程错误

dar*_*roo 6 python mysql django python-2.7 django-1.5

当我运行服务器并尝试加载本地版本的Web应用程序时,在Django 1.5.1(和1.5.0)和mysql中抛出以下DatabaseError:

/的DatabaseError /

在线程中创建的DatabaseWrapper对象只能在同一个线程中使用.具有别名'default'的对象是在线程ID 4365488128中创建的,这是线程ID 140735183980896.

例外位置如下:

/Users/USERNAME/.envs/PROJECT_NAME/lib/python2.7/site-packages/django/db/backends/ init .py in validate_thread_sharing,第154行

这仅在第一页加载时发生.当我点击刷新时,Web应用程序按预期加载.当我改变Django/python代码并且本地服务器需要重新验证时,错误返回.当发生这种情况时,第一次加载再次抛出DatabaseError,后续加载再次抛出.

这个问题只发生在我的Django 1.5项目上.我已经卸载了mysql并清除了位于/ usr/local/var/mysql中的mysql二进制文件.全新安装的mysql还没有解决这个问题.

这里讨论类似的DatabaseError,但我无法遵循他们的解决方案:

https://code.djangoproject.com/ticket/17998

我在这里不知所措,任何想法或专业知识都将受到赞赏.谢谢.

小智 7

我在导入django之前通过猴子修补解决了这个问题.*:

import eventlet
eventlet.monkey_patch()
Run Code Online (Sandbox Code Playgroud)

你理解的比我在这里使用线程.


trp*_*him 1

这是针对1.4的,但问题的原因可能和你的一样:

https://bitbucket.org/akoha/django-digest/issue/10/conflict-with-global-databasewrapper

该帖子中有两种可能的解决方案,尽管两者似乎都是解决方法:

“我已经能够通过在 db.py 中注释掉 close_connection 来解决这个问题”

“一个肯定有效的修复方法是用 django.db.connection 和 django.db.tranasction 替换 MultiDb/get_default_db()/self.db,如下所示:https: //docs.djangoproject.com/en/dev/topics /db/sql/#executing-custom-sql-直接