Python Django用于企业web应用程序

Python Django用于企业web应用程序,python,django,Python,Django,我想知道Django是大型web应用程序(社交网络)的好选择吗?更具体地说,我需要一些关于DB事务数量增加时性能的建议,我想知道Django中包含的嵌入式或映射是一个好选择,还是应该实现它们 谢谢 数据库事务数增加时的性能 不是Django的问题,真的 通过Apache和mod_wsgi,您可以有很多并发的Django会话。他们将共享一个公共数据库 因此,这完全是一个数据库问题。您应该能够配置足够的Apache/Django会话,以使您的数据库被淹没 或者Django中包含的映射是一个不错的选择

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

谢谢

数据库事务数增加时的性能

不是Django的问题,真的

通过Apache和mod_wsgi,您可以有很多并发的Django会话。他们将共享一个公共数据库

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

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

对。这真是个不错的选择

除非你能证明ORM是你的瓶颈,否则就使用它

随着扩展,您将重新设计数据库、缓存和其他体系结构功能。因为ORM有一个缓存(数据库也是如此),所以这里很少有性能问题

你可以


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

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

  • 尽可能多地用Django ORM表达查询(如果没有经验,可能很容易忽略Django中不可能的查询)
  • 如果在Django中确实无法进行查询(如果确实不确定,还可以询问IRC#Django频道或Django用户组),请将查询存储在querys.py文件中,dba可以管理或查看该文件。(它可以是模型文件引用的平面字典。)
  • 作为第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""",
    

    }

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

    因此,您是否建议使用另一台服务器来处理静态文件,如nginx或lighttpd,或者将其卸载到CDN?而不是另一台服务器。现有服务器的另一部分。将服务器配置为通过mod_wsgi向Django发送Django请求。配置要直接处理的静态介质请求。Django文档详细介绍了这种配置,我将静态内容托管在orther的另一个域中,以防止为每个请求发送cookie和其他一些头。感谢回复“防止为每个请求发送cookie和一些其他头”?似乎工作太多,收益太少。你能证明这有帮助吗?当你处理很多请求时,这肯定会有帮助。因此,您需要尽可能减少请求大小。