【问题标题】:Single MySQL session per python\django process每个 python\django 进程的单个 MySQL 会话
【发布时间】:2012-01-02 08:11:55
【问题描述】:

如果在 python\django 程序开始时,我加载了一个执行原始自定义 sql 命令的模块,例如

from django.db import connection
cursor = connection.cursor()
cursor.execute("SET SESSION wait_timeout=2147483")

因此改变一个 session 变量,它会在程序的所有其余部分运行吗?即该模块是否与在同一 python\django 进程中运行的其余代码位于同一 MySQL 会话中?

【问题讨论】:

    标签: mysql django session session-variables


    【解决方案1】:

    不可靠。

    正确的做法是在数据库设置的OPTIONS 字典中使用init_command

    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.mysql',
            ...
            'OPTIONS': {
                'init_command': '"SET SESSION wait_timeout=2147483',
            },
        }
    }
    

    【讨论】:

    • 丹尼尔,你能详细说明为什么“不可靠”吗?
    • 因为在 Django 中实际上没有任何“开始”的概念。服务器本身可以随时启动一个新进程,并且目前没有任何挂钩可以绑定到该进程。
    猜你喜欢
    • 2013-03-21
    • 2011-07-25
    • 2016-05-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-07
    相关资源
    最近更新 更多