首页 文章

扩展Django需要什么? [关闭]

提问于
浏览
0

问题

所以我能够编写一个Django网络应用程序,但我很害怕我无法提出如何为大型(大型)受众构建Django Web应用程序的解决方案 . 很高兴知道Django scales,至少 .

我是怎么想的

似乎需要有一个相对较大的知识飞跃来理解如何(更不用说实际执行)扩展Django Web应用程序 . 我这样说是因为我的研究给我的印象是,扩展(或支持可扩展性)是一个为网络应用程序的不同组件提供售后解决方案的过程,以提高每个组件的性能 .

Ajustsomanythings ~~

所以有很多解决方案,还有一堆 components . 例如, hostingDjango's cache frameworkMemcachedVarnish适用于 cachingCassandraRedisPostgreSQL适用于 databasesuWSGI,Nginx和Apache适用于 deployment . 无论如何,如果我认为是对的 . 我还不确定 .

我需要什么

我渴望这个惊人的反应成为问题的规范答案,但也会欣赏从哪里开始的方法,或者解决问题的方法的建议,或者你扩展Django的方法 . 提前感谢您所做的那些智慧之词 . <<编辑:SO不赞成:(

全新和独家:STACKOVERFLOW的问题!

我需要什么

为了提高我正在构建的Django Web应用程序的扩展准备,我应该做/实现的3个最重要/最有效的事情是什么?列出方法,并解释它们如何帮助会很好 .


*我一直在作弊 . 我部署在Pythonanywhere上,直到现在才使用Sqlite3 . 到目前为止,我还设法保持清洁WSGI / Apache部署的东西 .

**有了Django,我第一次通过编程创造了一些有 Value 的东西 . 以前,我只使用Pascal欺骗Runescape和Java制作一些糟糕的Android应用程序 . 这也许可以解释为什么我觉得这是一个巨大的飞跃 .

1 回答

  • 4

    我最初真的不会太担心它 . 也就是说,这里有一些关于如何考虑扩展Django应用程序的想法 .

    缓存

    根据您的应用程序的不同,缓存确实非常有用 . 当然,对于任何具有高比例读写操作的应用程序,例如博客或内容管理系统,然后实现缓存是一个明智的选择 . 对于其他类型的站点,您可能需要更加小心,但是Django缓存框架可以直接自定义缓存如何为您的应用程序工作 .

    使用Django缓存很容易设置Memcached,它坚固可靠 . 它应该是您作为缓存后端的默认选择 .

    芹菜

    如果您的Web应用程序在后台执行任何不需要在相同HTTP请求期间执行的大量任务,那么您应该考虑使用Celery在单独的任务中执行它们 .

    例证:在我构建的Django应用程序上,可以选择向客户端发送附有报告的PDF副本的电子邮件 . 由于无需在同一HTTP请求中发送电子邮件,因此我将该任务交给了Celery . 现在,当应用程序收到HTTP请求时,它只是将请求发送到消息传递队列 . Celery进程接受此任务并单独处理它 .

    理论上,当您的Web应用程序变得足够大时,可以在完全独立的计算机上处理任务 .

    Web服务器

    人们普遍认为,使用Django提供静态内容和动态内容是一个坏主意 . 我使用的解决方案似乎相当典型,并使用两个Web服务器:

    • Nginx在端口80上运行 . 它为所有静态文件提供服务,并将其他所有内容反向代理到另一个端口

    • Gunicorn在另一个端口运行,它提供动态内容,Supervisor用于运行Gunicorn进程

    这个概念存在变体,但这种两种服务器方法似乎很常见 . 您还可以考虑使用Amazon的S3来托管静态文件 .

    在花时间缩小静态文件以提高性能的同时,这也是值得的 . 使用像Grunt这样的工具,可以很容易地连接和缩小JavaScript和CSS文件,以便只需要下载每个文件中的一个,而不是包含需要单独下载的许多文件 .

    数据库

    MySQL或Postgresql都可以 . 两者都是在许多网站上用于 生产环境 的可靠数据库 .

    正如我所说的更高,扩展你的应用程序不应该在早期太过担心 . 但是,熟悉您需要使用的策略是有帮助的 .

相关问题