如何在2个端口上拆分Django Rest应用

时间:2018-09-18 19:16:36

标签: python django

我有一个django项目,该项目实现了2个单独的rest api。两者共享大量的后端逻辑,并在单个站点内作为单独的应用程序实现。我要求api必须在不同的端口上运行,以便最终用户可以使用其现有的防火墙来控制对两个其余api的访问。

现在,我有一个在两个应用之间路由的url配置。例如

urlpatterns = [
    path("oper/api/v1", include("operator.urls"),
    path("user/api/v1", include("user.urls"),
]

我也有一个systemd服务脚本,将Django应用程序作为服务启动。

我的计划是拥有2个systemd服务脚本,一个用于操作员api,另一个用于用户api。在开发模式下运行时,我希望两个其余的api都显示为一个,以便请求dev-host:8080 / oper / api / v1的请求将路由到“ operator.urls”模块和dev-host:8080 / user / api / v1将路由到“ user.urls”模块。

我正在考虑使用环境变量进行区分,例如如果DJANGO_ENV = operator_prod,它将在端口8081上启动服务器,并且仅接受“ oper / api / v1”终结点。如果DJANGO_ENV = user_prod,它将在端口8082上启动,并且仅接受“ user / api / v1”终结点。但是,如果未设置DJANGO_ENV或将其设置为开发状态,它将监听8080并接受任何端点。

此外,两个api之间共享一些通用端点,例如无论运行哪个端口,/ admin和/ static都需要工作。

有关如何执行此操作的任何建议?如果在django中本身不可能,也许使用haproxy之类的方法可能有用?

0 个答案:

没有答案