1+ import os
2+ import urllib .request
13from cfenv import AppEnv
24from oauth2 import OAuth2Client
35from py_eureka_client .eureka_client import EurekaClient
6+ import py_eureka_client .logger as logger
7+ import py_eureka_client .http_client as http_client
8+ from urllib .error import URLError
9+ from typing import Union
10+
11+ logger .set_level ('DEBUG' )
12+
13+ class MyHttpClient (http_client .HttpClient ):
14+
15+ async def urlopen (self , request : Union [str , http_client .HttpRequest ] = None ,
16+ data : bytes = None , timeout : float = None ) -> http_client .HttpResponse :
17+ if isinstance (request , http_client .HttpRequest ):
18+ req = request
19+ elif isinstance (request , str ):
20+ req = http_client .HttpRequest (request , headers = {'Accept-Encoding' : 'gzip' })
21+ else :
22+ raise URLError ("Invalid URL" )
23+
24+ req = req ._to_urllib_request ()
25+ req .add_header ("Connection" , "close" )
26+ req .add_header ("Authorization" , f"Bearer { self .oauth_client .get_access_token ()} " )
27+ res = urllib .request .urlopen (req , data = data , timeout = timeout )
28+ return http_client .HttpResponse (res )
29+
30+ http_client .set_http_client (MyHttpClient ())
431
532class EurekaServerClient :
633 def __init__ (self , port : int ):
@@ -22,12 +49,21 @@ def __init__(self, port: int):
2249
2350 self .client = EurekaClient (
2451 app_name = self .env .name ,
52+ instance_host = self .env .uris [0 ],
53+ instance_ip = os .getenv ('CF_INSTANCE_INTERNAL_IP' ),
54+ instance_id = f"{ self .env .uris [0 ]} :{ self .env .app .get ('instance_id' ) or '0' } " ,
55+ instance_unsecure_port_enabled = True ,
2556 instance_port = port ,
57+ instance_secure_port_enabled = True ,
58+ instance_secure_port = port ,
2659 eureka_server = self .credentials ['uri' ]
2760 )
2861
62+ self .client .start ()
63+
2964 def on_err (err_type : str , err : Exception ):
3065 print (f"{ err_type } ::{ err } " )
66+ raise err
3167
3268 async def start (self ):
3369 await self .client .start ()
0 commit comments