9

我有一个带有相关 API 和数据库的 Web 应用程序。

我想在 API 中使用相同的 Django 模型,但让它由不同的进程分别提供服务,以便我可以独立扩展它。

我也不需要 API 来提供静态资产或任何其他视图。

复杂之处在于我定义的路由有 API 和 webapp 共享根域:

http://domain.com/normal/application/stuff
http://domain.com/api/different/stuff

此外,我的 Django 应用程序依赖于彼此的模型和常量(因此两个不同的settings.py文件INSTALLED_APPS并不能完全解决它)。

我想一种方法是我可以在我的 Procfile 中定义不同的进程来启动 Django 应用程序,但是在其中一个进程中它可能有不同的环境变量?我认为我不能使用 更改每个 Proc 的环境heroku:config,我认为它实际上必须是 Procfile 中的指令。

有人对此有任何经验或见解吗?谢谢!

4

2 回答 2

2

正如丹尼尔所说,您可以只使用两个具有共享基础的设置文件。如果您想提供 url 的子集,您还应该在ROOT_URLCONF设置中创建单独的 url 定义。

所以你的项目结构会是这样的:

project/
    project/
       settings/
           __init__.py
           base.py
           normal.py
           api.py
       urls/
           __init__.py
           base.py
           normal.py
           api.py
       wsgi/
           __init__.py
           normal.py
           api.py

settings/normal.py(api 的模拟)会是这样的:

from .base import *
ROOT_URLCONF = 'project.urls.normal
于 2015-07-11T08:45:35.493 回答
1

我认为您不需要不同的环境变量,只需一个指向不同 settings.py 的单独 WSGI 文件即可。这些设置文件可以从一个通用文件中导入共享设置,然后为 INSTALLED_APPS 设置它们的特定值。然后 Procfile 可以在单独的进程中引用那些 wsgi 文件。

于 2015-07-02T16:57:50.813 回答