Django中的多租户SAAS

26

我曾经用PHP/Laravel开发过多租户的SAAS应用程序,但最近面临一个在Django/Python中开发的挑战。虽然我还在学习Django,但我真的很喜欢Django Rest Framework(DRF)。但是我遇到了以下突出区域的困难,如果有人能给我指点一下,那就太好了:

  1. 如何处理子域名/域名并选择正确的租户数据库
  2. 如何管理和动态处理Django中的不同数据库
  3. 多租户应用程序后端是否仍可以从Django管理界面进行管理
  4. 我将使用队列和其他应用程序扩展技术,需要任何提示或技巧
  5. 是否有任何示例可供参考
  6. 在开发SAAS时是否有任何挑战经验

请查看您问题的可能重复:Python / Django 多租户解决方案 - Ber
是的,但我意识到django-tenant-schemas仅与PostgreSQL相关联。无论如何,您可以处理MySQL并正确处理域名。 - Cheruiyot Felix
1个回答

27

好的...

  1. django-subdomains:Django子域名插件。
  2. 人们在SO上询问关于Django中动态数据库的问题(包括我...自己)。我不确定你所说的“动态处理不同数据库”是什么意思,因此建议您访问我刚提到的链接并选择最适合您项目的内容。(也许这更相关?)
  3. 请查看django-multitenant-schemas这个答案
  4. 有一段视频介绍了Disqus背后的团队(这是世界上最大的Django应用程序之一)如何处理扩展。这里还有另一篇有趣的文章。另外,传奇的SO问题Django是否可扩展
  5. (和6.) 请查看这个答案
我希望这已经足够详细了。我知道这可能是一个令人失望的只有链接的答案,但这就是现实——Django是一个较新的框架,使用Python进行Web开发仍然比PHP少见。考虑到这一点,要理解Django的所有优点(它确实很棒),在需要更复杂的功能时,您将不得不自己完成更多工作。
在这种情况下,您需要逐个弄清楚如何完成每个部分,然后将其组合起来。例如,您可以轻松找到创建REST Django应用程序的方法,但然后您需要弄清楚如何将其与另一个包(例如上面提到的子域)结合使用。
您可以在外面找到无数的例子,人们正在使用Django做各种奇怪的事情。它非常强大(当我了解dynamic models时,我感到震惊)。但是,您的应用程序越复杂,您就需要自己完成更多工作。
一步一步地学习,并在遇到具体问题时回到SO(或django users google group)。祝你好运!

我一直在查看所有建议,我认为这可能是接近答案但并不十分充足。我已经意识到,Django ORM绑定数据库的方式并不会给你很多灵活性,以便按照你想要的方式轻松地操作内容。您是否知道有哪些示例/引导可以同时使用上述大部分功能?我想得到和遵循好的/推荐的做法。我认为我还需要将我的数据库从MySQL切换到PostgreSQL。 - Cheruiyot Felix
这正是我的观点 - 你有一份复杂的需求清单,每个需求都可以找到很多例子,但是组合部分可能需要自己解决,因为django在这方面还比较新。至于切换 - 坦率地说,django从一开始就是使用PostgreSQL创建的,MySQL支持是后来添加的。但我个人对MySQL和django的结合有良好的经验,所以现在你应该尝试用你所知道的东西让它工作。 - yuvi
最后一件事 - ORM 允许几乎所有你需要的灵活性(如果万不得已,还允许原始 SQL 查询)。这只是一个了解细节的问题。然而,我不会撒谎,有一些声称更好的替代品(例如 pee-wee),但我不能推荐它们。我认为在寻找替代方案之前,你应该尝试使用 ORM。 - yuvi
好的。感谢提供详细信息。如果您发现任何问题,请考虑更新此帖子,以便将来对其他人有所帮助。我也承诺在开展这个项目时这样做。谢谢。 - Cheruiyot Felix
当然没问题!祝你好运 =] - yuvi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接