django在heroku上部署单独的web和api端点

lol*_*ter 9 python django heroku procfile

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

我想在API中使用相同的Django模型,但是它由不同的进程单独提供,因此我可以独立扩展它.

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

复杂的是我定义的路由有API,webapp共享根域:

http://domain.com/normal/application/stuff
http://domain.com/api/different/stuff
Run Code Online (Sandbox Code Playgroud)

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

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

任何人都有这方面的经验或见解吗?谢谢!

jga*_*nge 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
Run Code Online (Sandbox Code Playgroud)

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

from .base import *
ROOT_URLCONF = 'project.urls.normal
Run Code Online (Sandbox Code Playgroud)