- 浏览: 2662969 次
- 来自: 杭州
文章分类
- 全部博客 (1188)
- webwork (4)
- 网摘 (18)
- java (103)
- hibernate (1)
- Linux (85)
- 职业发展 (1)
- activeMQ (2)
- netty (14)
- svn (1)
- webx3 (12)
- mysql (81)
- css (1)
- HTML (6)
- apache (3)
- 测试 (2)
- javascript (1)
- 储存 (1)
- jvm (5)
- code (13)
- 多线程 (12)
- Spring (18)
- webxs (2)
- python (119)
- duitang (0)
- mongo (3)
- nosql (4)
- tomcat (4)
- memcached (20)
- 算法 (28)
- django (28)
- shell (1)
- 工作总结 (5)
- solr (42)
- beansdb (6)
- nginx (3)
- 性能 (30)
- 数据推荐 (1)
- maven (8)
- tonado (1)
- uwsgi (5)
- hessian (4)
- ibatis (3)
- Security (2)
- HTPP (1)
- gevent (6)
- 读书笔记 (1)
- Maxent (2)
- mogo (0)
- thread (3)
- 架构 (5)
- NIO (5)
- 正则 (1)
- lucene (5)
- feed (4)
- redis (17)
- TCP (6)
- test (0)
- python,code (1)
- PIL (3)
- guava (2)
- jython (4)
- httpclient (2)
- cache (3)
- signal (1)
- dubbo (7)
- HTTP (4)
- json (3)
- java socket (1)
- io (2)
- socket (22)
- hash (2)
- Cassandra (1)
- 分布式文件系统 (5)
- Dynamo (2)
- gc (8)
- scp (1)
- rsync (1)
- mecached (0)
- mongoDB (29)
- Thrift (1)
- scribe (2)
- 服务化 (3)
- 问题 (83)
- mat (1)
- classloader (2)
- javaBean (1)
- 文档集合 (27)
- 消息队列 (3)
- nginx,文档集合 (1)
- dboss (12)
- libevent (1)
- 读书 (0)
- 数学 (3)
- 流程 (0)
- HBase (34)
- 自动化测试 (1)
- ubuntu (2)
- 并发 (1)
- sping (1)
- 图形 (1)
- freemarker (1)
- jdbc (3)
- dbcp (0)
- sharding (1)
- 性能测试 (1)
- 设计模式 (2)
- unicode (1)
- OceanBase (3)
- jmagick (1)
- gunicorn (1)
- url (1)
- form (1)
- 安全 (2)
- nlp (8)
- libmemcached (1)
- 规则引擎 (1)
- awk (2)
- 服务器 (1)
- snmpd (1)
- btrace (1)
- 代码 (1)
- cygwin (1)
- mahout (3)
- 电子书 (1)
- 机器学习 (5)
- 数据挖掘 (1)
- nltk (6)
- pool (1)
- log4j (2)
- 总结 (11)
- c++ (1)
- java源代码 (1)
- ocr (1)
- 基础算法 (3)
- SA (1)
- 笔记 (1)
- ml (4)
- zokeeper (0)
- jms (1)
- zookeeper (5)
- zkclient (1)
- hadoop (13)
- mq (2)
- git (9)
- 问题,io (1)
- storm (11)
- zk (1)
- 性能优化 (2)
- example (1)
- tmux (1)
- 环境 (2)
- kyro (1)
- 日志系统 (3)
- hdfs (2)
- python_socket (2)
- date (2)
- elasticsearch (1)
- jetty (1)
- 树 (1)
- 汽车 (1)
- mdrill (1)
- 车 (1)
- 日志 (1)
- web (1)
- 编译原理 (1)
- 信息检索 (1)
- 性能,linux (1)
- spam (1)
- 序列化 (1)
- fabric (2)
- guice (1)
- disruptor (1)
- executor (1)
- logback (2)
- 开源 (1)
- 设计 (1)
- 监控 (3)
- english (1)
- 问题记录 (1)
- Bitmap (1)
- 云计算 (1)
- 问题排查 (1)
- highchat (1)
- mac (3)
- docker (1)
- jdk (1)
- 表达式 (1)
- 网络 (1)
- 时间管理 (1)
- 时间序列 (1)
- OLAP (1)
- Big Table (0)
- sql (1)
- kafka (1)
- md5 (1)
- springboot (1)
- spring security (1)
- Spring Boot (3)
- mybatis (1)
- java8 (1)
- 分布式事务 (1)
- 限流 (1)
- Shadowsocks (0)
- 2018 (1)
- 服务治理 (1)
- 设计原则 (1)
- log (0)
- perftools (1)
最新评论
-
siphlina:
课程——基于Python数据分析与机器学习案例实战教程分享网盘 ...
Python机器学习库 -
san_yun:
leibnitz 写道hi,我想知道,无论在92还是94版本, ...
hbase的行锁与多版本并发控制(MVCC) -
leibnitz:
hi,我想知道,无论在92还是94版本,更新时(如Puts)都 ...
hbase的行锁与多版本并发控制(MVCC) -
107x:
不错,谢谢!
Latent Semantic Analysis(LSA/ LSI)算法简介 -
107x:
不错,谢谢!
Python机器学习库
原文:http://www.cnblogs.com/Alexander-Lee/archive/2011/11/12/django_long_connection.html
书接上回
上回我们说到:《在生产系统使用Tornado WebServer来代替FastCGI加速你的Django应用 》
那么现在很流行用一些高性能的nonblock的app server来host Django的应用,这些Server可以看做是一个单进程单线程的程序,然后用nginx在前端反向代理并且负载均衡到N多个后端工作进城来充分利用多 CPU的性能,当然这部分的配置工作在上回已经说得很清楚了。但是对于Django来说有一个问题。因为Django的数据库连接是在查询的时候实时创建 的,用完就会关掉,这样就会频繁的开闭连接。但是对于Tornado这种Server来说这种方式是低效的。这种Server最高效的工作模式是每个进程 开启一个连接,并长期保持不关闭。本文的目的就是尝试使Django改变一贯的作风,采用这种高效的工作模式。本文基于Django1.3的版本,如果是 低版本可以稍加更改一样可以使用。
Django的数据库可以通过配置使用专门定制的Backend,我们就从这里入手。
首先我们看看Django自带的Backend是如何实现的。在Django官网上可以看到自带MySql的Package结构,可以点击 此处 前往瞻仰。
通观源码我们可以发现,Django基本上是封装了MySQLdb的Connection和Cursor这两个对象。而且重头实现整个 Backend既不实际而且也不能从根本上解决问题。所以我们可以换一个思路。所有的数据库操作都是从获取Connection对象开始的,而获取 Connection对象只有一个入口,就是MySQLdb.connect这个函数。所以我们只需要包装MySQLdb这个模块,用我们自己的 connect方法替代原本的,这样就从根源上解决了问题。我们在包装器内部维护MySQLdb的Connection对象,使其保持长连接,每次 connect被调用的时候判断一下,如果连接存在就返回现有连接,不就完美了吗?所以我们可以分分钟写下第一个解决方案:
发表评论
-
django 处理unicode编码
2013-04-28 22:18 2835django.util.encoding.py impor ... -
django lazy user实现
2013-04-26 15:48 1224代码如下: from people.service ... -
django db models探索
2013-03-24 16:04 1805一、django db models结构 django ... -
django + sqlalchemy pool 测试
2013-03-15 22:59 13931.修改gevent /duitang/dist/sys ... -
django template探索
2013-01-04 18:18 1247由于需要解决django template问题,研究了djan ... -
django db backends探索
2012-12-29 18:20 2486由于需要解决django db长连接的问题,最近看了看djan ... -
MySQL Connection Pooling with Django and SQLAlchemy
2012-12-28 21:54 0Here's a quick and dirty recipe ... -
Launching a High Performance Django Site
2012-12-28 21:39 1076Are the brakes on your Django a ... -
django 性能优化
2012-12-28 17:24 2123django默认的一些系统性能低下,无法支撑大流量请求,一些优 ... -
django 的BaseMemcachedCache线程安全问题
2012-10-21 15:11 1125注意,django.core.cache.backends.m ... -
django request 获取请求的URL
2012-10-17 17:17 22090request.get_host() 获取请求地址 ... -
django user model
2012-09-12 22:01 945http://stackoverflow.com/questi ... -
python uwsgi
2012-07-30 17:21 0之前的文章已经提到了 django+fastcgi的运行并 ... -
在生产系统使用Tornado WebServer来代替FastCGI加速你的Django应用
2012-07-30 17:19 5原文:http://www.cnblogs.com/Alexa ... -
python web.py
2012-07-30 17:04 943使用web.py能快速启动一个web服务。 # -*- c ... -
浅析 Django runserver 的 autoreload 功能
2012-07-30 16:53 5148浅析 Django runserver 的 auto ... -
django auth_user.get_profile
2012-07-24 12:29 2626django 对 auth_user 提供了扩展get_pro ... -
django + postfix 搭建邮件服务
2012-07-23 14:48 1396email 配置: SERVER_EMAIL = &q ... -
django 中文问题
2012-07-17 16:45 1601好像每个国外的开源框架都会遇到中文问题,今天又被django ... -
django 的关联ID
2012-07-16 17:52 1035blog.album_id 是直接取外键 blog.album ...
相关推荐
在进行django数据库连接模块解析及简单长连接改造方法的讨论前,首先需了解django框架中数据库连接管理的基本原理。Django使用ORM(对象关系映射)来与数据库进行交互,这允许开发者使用Python代码来操作数据库,而...
在开发过程中,你可能还会遇到数据库连接丢失或在远程服务器上部署Django项目时同步数据库报错的情况。确保正确配置数据库连接参数、检查网络连接、以及遵循服务器安全策略都是解决这些问题的关键步骤。 总之,正确...
为了在Django项目中使用Citus,我们需要安装`citus` PostgreSQL扩展,并在Django的数据库配置中指定Citus连接。配置文件可能如下所示: ```python DATABASES = { 'default': { 'ENGINE': 'django.db.backends....
Python 连接达梦数据库可以用于各种应用程序,例如,使用 Django 进行网站开发,使用 Python 做后端。可以通过查看达梦数据库的文档和社区支持来获取更多信息。 Python 连接达梦数据库需要按照一定的步骤进行,...
`Django-Dongo`就是这样一个工具,它为Django提供了连接到MongoDB的能力,让Django能够无缝地使用非关系型数据库。 Django-Django,也称为Djongo,是由nesdis公司开发的一个库,允许Django与MongoDB进行交互。这个...
在Python开发领域,Django是一个强大的Web框架,它支持快速构建高效、可维护的网站应用。结合MySQL数据库,我们可以创建稳健的数据存储系统。本教程将详细介绍如何使用Django与MySQL协同工作,实现数据的插入操作。 ...
接着,我们可以使用`connections`来获取数据库连接,然后调用`introspection`模块中的方法来获取表的信息: ```python db_name = 'default' # 这里替换为你的数据库名 connection = connections[db_name] ...
在设置好数据库连接后,你需要确保你的环境安装了支持MySQL的Django后端。Django本身并不包含MySQL的后端,所以你需要安装`mysqlclient`或`pymysql`库。可以使用pip进行安装: ```bash pip install mysqlclient # ...
Django支持多种数据库,包括MySQL。通过配置settings.py文件中的DATABASES设置,我们可以将Django项目连接到MySQL数据库。在本例中,我们需要从数据库中读取数据表,这可以通过Django的ORM(对象关系映射)系统实现...
通过简单的配置,如设置环境变量、数据库连接等,你就能将这个系统部署并运行起来。 【标签】:“django 毕业设计 Python” “django”标签表明此项目的核心技术是Django框架,而“Python”标签则强调了整个项目是...
5. 测试连接:为了确保数据库连接无误,可以编写简单的视图来测试连接是否成功,或者使用Django的管理后台来查看是否可以正常访问数据库。 由于SQL Server是一个商业产品,并且是闭源的,相较于开源的数据库系统,...
Django支持多种数据库,包括MySQL、SQLite、Oracle和PostgreSQL。要在Django项目中使用PostgreSQL,首先需要在`settings.py`文件中的`DATABASES`配置中指定数据库引擎为`'django.db.backends.postgresql'`或`'django...
Django支持多种数据库,包括SQLite、MySQL、PostgreSQL等。默认情况下,Django使用SQLite,这是轻量级且易于上手的。在settings.py文件中,你可以配置DATABASES变量来指定使用的数据库。 2. 模型(Model): 在...
由于Django默认不支持pymysql,我们需要告诉Django使用它。在你的Django项目的`__init__.py`文件中添加以下代码: ```python import pymysql pymysql.install_as_MySQLdb() ``` 这行代码会使得Django认为pymysql是...
如果没有任何错误提示,说明数据库连接成功。 8. **操作数据库**:现在你可以使用Django ORM(对象关系映射)来创建、查询和操作数据库。例如,创建模型,同步数据库结构,或者执行SQL查询。使用`python manage.py ...
为了提升应用性能,Django允许开发者通过数据库连接配置和数据库路由实现读写分离。接下来,我们将详细探讨如何在Django项目中实现数据库的连接、配置以及读写分离。 首先,配置Django项目连接数据库是读写分离的第...
Django数据库自动重连的一个常见问题是当数据库连接因为长时间无操作(默认由MySQL的`wait_timeout`参数设定)而被关闭。在Django默认的数据库连接池中,如果连接丢失,它可能不会自动尝试重新建立连接,这可能导致...
这时,我们就需要在Django项目中配置多个数据库连接。 #### 2. 修改settings.py配置 在Django项目的settings.py文件中配置DATABASES字典,以定义项目将要使用的数据库。这个字典中至少包含一个键为'default'的条目...