向Eureka中注册Django项目

3 篇文章 0 订阅
2 篇文章 0 订阅

向Eureka中注册Django项目

author: fengclchn@outlook.com

version:1.0

time: 05/21/2021

服务注册

  1. 项目环境下安装 py_eureka_client
    $ pip install py_eureka_client
    
  2. manage.py 中加入如下内容:
    import py_eureka_client.eureka_client as eureka_client
    
    # 服务ip与端口
    # server_host = "xxxxxx"
    # server_ip = "127.0.0.1"
    server_port = 8000
    
    
    def eureka_init():
        eureka_client.init(eureka_server="http://xxx.xxx.xxx.xxx:xxxxx/eureka/",
                           app_name="host_name",
                           # instance_host=server_host,
                           # instance_ip=server_ip,
                           instance_port=server_port,
                           status_page_url="/xxxxxx/actuator/info",
                           ha_strategy=eureka_client.HA_STRATEGY_RANDOM
                           )
        print("Eureka client is running")
    
  • 参数含义如下:

    • 自定义参数
    参数含义备注
    server_host服务组件主机名用于修改instance_host
    server_ip服务组件ip用于修改instance_ip
    server_port服务组件端口用于修改instance_port
    • eureka_client.init() 参数
    参数含义备注
    eureka_servereureka注册地址
    app_name服务组件名服务组件的名称,自定义
    instance_host服务组件主机名可选参数,如果不填写会自动计算一个
    instance_ip服务组件ip可选参数,如果不填写会注册当前服务所在ip
    instance_port服务组件端口号
    status_page_url状态检测地址在项目urls.py中书写,具体见本文状态检测
    ha_strategy调用其他服务时的高可用策略可选参数,默认为随机
    • 注意
      • instance_host:当前组件的主机名,可选参数,如果不填写会自动计算一个。如果服务和eureka服务器部署在同一台机器,则必须填写 instance_host ,否则会计算出127.0.0.1
  1. manage.py 主函数中添加此函数
    if __name__ == '__main__':
        eureka_init()
        main()
    
  • 注意eureka_init() 函数必须在 main() 函数之前,因为 main() 函数相当于一个无限循环,只有当项目停止运行时才会出来
  1. 可以将2中的代码单独写一个文件,在 manage.py 文件中引入,例如:
    • manage.py
      #!/usr/bin/env python
      """Django's command-line utility for administrative tasks."""
      import os
      import sys
      from utils.eureka.euraka_init import eureka_init # 引入刚写的文件
      
      
      def main():
          """Run administrative tasks."""
          os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'xxxxxx.settings')
          try:
              from django.core.management import execute_from_command_line
          except ImportError as exc:
              raise ImportError(
                  "Couldn't import Django. Are you sure it's installed and "
                  "available on your PYTHONPATH environment variable? Did you "
                  "forget to activate a virtual environment?"
              ) from exc
          execute_from_command_line(sys.argv)
      
      
      if __name__ == '__main__':
          eureka_init() # Eureka注册函数
          main()
      
    • eureka.py
      import py_eureka_client.eureka_client as eureka_client
      
      # 服务ip与端口
      # server_host = "xxxxxx"
      # server_ip = "127.0.0.1"
      server_port = 8000
      
      
      def eureka_init():
          eureka_client.init(eureka_server="http://xxx.xxx.xxx.xxx:xxxxx/eureka/",
                             app_name="host_name",
                             # instance_host=server_host,
                             # instance_ip=server_ip,
                             instance_port=server_port,
                             status_page_url="/xxxxxx/actuator/info",
                             ha_strategy=eureka_client.HA_STRATEGY_RANDOM
                             )
          print("Eureka client is running")
      

状态检测

  1. views 文件夹中(也可以是自己的视图函数路径)新增一个 eureka.py 文件,在其中添加
    from rest_framework.views import APIView
    from rest_framework.response import Response
    
    
    class ActuatorInfo(APIView):
        authentication_classes = []
    
        def get(self, request, *args, **kwargs):
            return Response("ActuatorInfo is OK")
    
    
    class ActuatorHealth(APIView):
        authentication_classes = []
    
        def get(self, request, *args, **kwargs):
            return Response({
                "status": "UP"
            })
    
  2. 在项目 urls.py 文件的urlpatterns中添加
    urlpatterns = [
        '''
        其他业务接口
        '''
    	# Eureka
    	url(r"xxxxxx/actuator/info", eureka.ActuatorInfo.as_view()),
    	url(r"xxxxxx/actuator/health", eureka.ActuatorHealth.as_view())
    ]
    
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值