Django用于企业Web应用程序

时间:2010-09-14 13:01:33

标签: python django

我想知道Django是一个大型网络应用程序(社交网络)的不错选择吗?更具体地说,当数据库事务数量增加时,我需要一些关于性能的建议,我想知道Django中包含的嵌入式OR映射是一个不错的选择,还是我应该实现它们。

由于

3 个答案:

答案 0 :(得分:4)

  

当数据库事务数量增加时执行。

真的不是Django问题。

你可以通过Apache和mod_wsgi进行大量的并发Django会话。所有这些都将共享一个共同的数据库。

因此,这完全是一个数据库问题。您应该能够配置数据库被淹没的足够的Apache / Django会话。

  

OR Django中包含的映射是一个不错的选择,或者我应该实现它们。

是。这是一个非常好的选择。

在您证明 ORM是您的瓶颈之前,请使用它。

随着您的扩展,您将重新编写数据库,缓存和其他架构功能。由于ORM具有缓存(与数据库一样),因此您很少遇到性能问题。

你可以。

但是,大多数性能问题都是通过Apache下载静态媒体文件。

答案 1 :(得分:3)

我应该补充一点,企业应用程序在使用Django ORM时可能遇到的一个大问题是它的功能有限(即它可以表达什么样的查询)。如果你做两件事,我认为这是可以控制的:

  1. 努力尽可能在Django ORM中表达查询(没有经验,在Django中可能很容易忽略查询)。
  2. 如果Django中的查询真的不可能(如果您确实不确定,也可以询问IRC #django频道或django-users组),请将查询存储在您的dba可以管理或查看的queries.py文件中在。 (它可以是模型文件引用的平面字典。)
  3. 作为第2点的示例:您没有理由不能编写以下列方式使用的查询存储管理器:假设您有一个名为blogs的应用程序,其模型名为Entry:

    # models.py
    class Entry(models.Model):
        objects = project.QueryStorageManager()
        author = models.ForeignKey(User)
        body = models.TextField()
        slug = models.CharField(max_length=512)
        published_date = models.DateField()
    
        @project.StoredQuery("getEntryMonthHistogram")
        def getEntryMonthHistogram(self, sql, author):
            return objects.runQuery(sql, author)
    
    # queries.py
    {
    "getEntryMonthHistogram": """SELECT EXTRACT(MONTH FROM published_date),
                                        REPEAT('*', count(*)) histogram
                                 FROM   blogs_entry
                                 WHERE  author_id = %s""",
    

    }

答案 2 :(得分:0)

我的公司刚刚为基于Django的大型企业构建了这样一个系统,包括所有移动系统。使用django,开发成本很低,企业服务器堆栈内的运行性没有问题。甚至Django设法让我们通过渗透和安全测试。使用任何其他语言,我们无法在极端预算限制下使用此项目取得成功