用于网络端口分配的django微服务

django-portmaster的Python项目详细描述


django portmaster是一种网络端口分配和管理 微服务。使用portmaster,您可以将端口范围分配给 服务并将端口注册到这些服务的不同实例。 这样就可以防止将同一端口分配两次,从而防止 分配冲突。

安装

  1. 使用PIP安装。
pip install django-portmaster
  1. 将应用程序添加到Django项目的设置文件中,并包括提供 清理中间件。
INSTALLED_APPS=[[..]'django_portmaster']MIDDLEWARE=[[..]'django_portmaster.middleware.CleanOldOffersMiddleware']
  1. 将portmaster的url包含到django项目的url文件中。
fromdjango_portmaster.urlsimportportmaster_urlpatternsurlpatterns+=portmaster_urlpatterns
  1. 可选地,您可以覆盖保留报价之前的时间 删除。将以下代码添加到settings.py文件中。
# Default value is 30 minutesPM_DELETE_OFFERS_AFTER_MINUTES=10

API

  • 通过创建服务定义端口范围。
POST/v1/services{"name":"django","description":"Django service","start":5000,"end":10000}
  • 通过提供服务实例名称从范围请求端口。
POST/v1/services/django/offers{"name":"web-01"}

响应

{"service":"django","name":"web-01","port":5000,"secret":"6f8ffc86-d98a-49ba-848a-a7cbaaea9360","created":"2017-09-08T14:16:39.277408Z"}
  • 端口不会立即分配。相反,它将被保留 直到客户端通过发布到专用url来接受端口 使用提供的密码:
POST/v1/services/django/offers/6f8ffc86-d98a-49ba-848a-a7cbaaea9360/accept

响应

{"service":"django","name":"web-01","port":5000,"created":"2017-09-08T14:18:04.094357Z"}
  • 或者,你可以拒绝这个提议。不接受的报价 在到达后由portmaster中间件自动删除 由PM_DELETE_OFFERS_AFTER_MINUTES设置设置的阈值(默认值 值为30分钟)。
POST/v1/services/django/offers/6f8ffc86-d98a-49ba-848a-a7cbaaea9360/reject
  • 您可以列出特定服务的所有端口配置。
GET/v1/services/django/ports
  • 按端口号查找一个
GET/v1/services/django/ports/5000
  • 或按服务实例名称查找
GET/v1/services/django/ports/web-01

安全防护

portmaster包含多个错误检查和角落案例处理程序,因此:

  • 服务名称必须唯一
  • 端口范围不能重叠
  • 端口范围不能与特权端口(<;1024)或IANA重叠 定义的短暂端口范围(>;49152)
  • 在任何给定时间只能分配一次端口
  • 服务实例名称必须唯一

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
Java中的图像动画GIF?   编译中的数组问题:java中csv文件拆分中的符号错误   java在maven项目中使用JDBC连接到Athena   安卓属性文件未通过java加载   macos如何强制Java应用程序登录到网络代理?   java有序二叉树,使用树排序按升序打印字符串   java如何使这个2D数组向右旋转90度?   上次修改的Java文件返回0   递归泛型/继承中的oop Java绑定不匹配   java如何在javamail api中将文件作为附件上传?   Android编程中的java:如何调用接受View类型参数的方法?   java在Spring数据JPA中嵌入对象而不是链接   需要一些将Java代码Android Studio移植到C#Visual Studio的帮助吗   java Akka Http大部分cpu时间都花在不安全的环境中。公园()   javaweb应用中的数据库角色管理   报告中未显示java Jasper映射组件   java如何使用SKMaps解决冲突依赖。广口番石榴   屏幕阅读器无法访问java QT的QWebView小部件   java无法获得第一个匹配项(与组无关)