o
    $i                     @   s  d dl Z d dlmZmZmZ d dlZd dlmZ d dlm	Z	 d dl
mZmZ d dlmZmZmZmZmZmZ d dlmZmZmZmZmZmZ d dlmZmZ d d	lmZ d d
l m!Z!m"Z" d dl#m$Z$m%Z%m&Z& d dl'm(Z(m)Z)m*Z*m+Z+m,Z, d dl-m.Z. de	defddZ/eege.f Z0dede.fddZ1		d6dedee2 dee0 defddZ3dd Z4dd Z5dd Z6d d! Z7d"d# Z8dee2ee2 f fd$d%Z9ee2ee"ge%f Z:	d7d&e2d'ed(e"d)ee de%f
d*d+Z;d,ed-e2fd.d/Z<d0ed1efd2d3Z=d4d5 Z>dS )8    N)CallableOptionalTuple)HEAD_NODE_RESOURCE_NAME)	GcsClient)ClusterNodeInfoCacheDefaultClusterNodeInfoCache)CreatePlacementGroupRequestDeploymentHandleSourceDeploymentIDEndpointInfoRequestMetadataRequestProtocol)CONTROLLER_MAX_CONCURRENCYRAY_SERVE_ENABLE_TASK_EVENTS)RAY_SERVE_PROXY_PREFER_LOCAL_NODE_ROUTING%RAY_SERVE_RUN_ROUTER_IN_SEPARATE_LOOPSERVE_CONTROLLER_NAMESERVE_NAMESPACE)DefaultDeploymentSchedulerDeploymentScheduler)gRPCGenericServer)DynamicHandleOptionsInitHandleOptions)CurrentLoopRouterRouterSingletonThreadRouter)generate_request_idget_current_actor_idget_head_node_idinside_ray_client_contextresolve_deployment_response)PlacementGroup
gcs_clientreturnc                 C   s   t | S N)r   )r#    r&   \/home/ubuntu/veenaModal/venv/lib/python3.10/site-packages/ray/serve/_private/default_impl.pycreate_cluster_node_info_cache2   s   r(   requestc                 C   s   t jj| j| j| j| jddS )Ndetached)_soft_target_node_idnamelifetime)rayutilplacement_groupbundlesstrategytarget_node_idr,   )r)   r&   r&   r'   _default_create_placement_group9   s   r4   cluster_node_info_cachehead_node_id_override"create_placement_group_fn_overridec                 C   s   |pt  }t| ||ptdS )N)create_placement_group_fn)r   r   r4   )r5   r6   r7   head_node_idr&   r&   r'   create_deployment_schedulerE   s   
r:   c                  K      ddl m} |di | S )Nr   )Replicar&   )ray.serve._private.replicar<   )kwargsr<   r&   r&   r'   create_replica_implS      r?   c                  K   r;   )Nr   )ReplicaMetricsManagerr&   )r=   rA   )r>   rA   r&   r&   r'   create_replica_metrics_managerY   r@   rB   c                  K   s   t di | S Nr&   )r   r>   r&   r&   r'   create_dynamic_handle_options_   s   rE   c                  K   s   t jdi | S rC   )r   createrD   r&   r&   r'   create_init_handle_optionsc   s   rG   c                 C   s   t jj }tj}| r| jtjkr|j	rtj
}n|jrtj}t|jr%|jnt |jr-|jnt |j|j|j|j|j||jdd
S )NT)

request_idinternal_request_idcall_methodrouteapp_namemultiplexed_model_idis_streaming_request_protocolgrpc_context_by_reference)r.   servecontext_get_serve_request_contextr   	UNDEFINED_sourcer
   PROXYis_http_requestHTTPrP   GRPCr   rH   r   _internal_request_idmethod_namerK   rL   rM   stream)init_optionshandle_options_request_contextrequest_protocolr&   r&   r'   get_request_metadatag   s.   rb   c                  C   sZ   t   } zttt  jd}|  || }W | |fS  ty,   d }Y | |fS w )N)address)	r.   get_runtime_contextget_node_idr(   r   gcs_addressupdateget_node_az	Exception)node_idr5   azr&   r&   r'   _get_node_id_and_az   s   rl   	handle_iddeployment_idr_   request_router_classc                 C   s   ddl m} t }t \}}| j}t }	|jrt}
nzt	  W n t
y,   t
dw t}
|
||| ||j||	 t|||jdS )Nr   _get_global_clientzNo event loop running. You cannot use a handle initialized with `_run_router_in_separate_loop=False` when not inside an asyncio event loop.)controller_handlern   rm   self_actor_idhandle_sourcero   "enable_strict_max_ongoing_requestsresolve_request_arg_funcrj   availability_zoneprefer_local_node_routing)ray.serve.contextrq   r   rl   _controllerr    _run_router_in_separate_loopr   asyncioget_running_loopRuntimeErrorr   rV   r!   _prefer_local_routing)rm   rn   r_   ro   rq   actor_idrj   rw   rr   is_inside_ray_client_contextrouter_wrapper_clsr&   r&   r'   create_router   s8   
r   grpc_serverserver_addressc                 C   s   |  | dS )z3Helper function to add an address to a gRPC server.N)add_insecure_port)r   r   r&   r&   r'   add_grpc_address   s   r   endpointinfoc                 C   sN   ddl m} | }|j| j| jdd}|js|jttj	t
d |j|j dS )Nr   rp   T)check_exists)r   rV   r{   )r]   )ry   rq   
get_handler,   rL   is_initialized_initr   r
   rW   r   optionsapp_is_cross_language)r   r   rq   clienthandler&   r&   r'   get_proxy_handle   s   r   c                  C   s4   ddl m}  tjttddddtdittd	| }|S )Nr   )ServeControllerr*   gMbP?)	r,   	namespacenum_cpusr-   max_restartsmax_task_retries	resourcesmax_concurrencyenable_task_events)	ray.serve._private.controllerr   r.   remoter   r   r   r   r   )r   controller_implr&   r&   r'   get_controller_impl   s   
r   )NNr%   )?r|   typingr   r   r   r.   ray._common.constantsr   ray._rayletr   *ray.serve._private.cluster_node_info_cacher   r   ray.serve._private.commonr	   r
   r   r   r   r   ray.serve._private.constantsr   r   r   r   r   r   'ray.serve._private.deployment_schedulerr   r   ray.serve._private.grpc_utilr   !ray.serve._private.handle_optionsr   r   ray.serve._private.routerr   r   r   ray.serve._private.utilsr   r   r   r    r!   ray.util.placement_groupr"   r(   CreatePlacementGroupFnr4   strr:   r?   rB   rE   rG   rb   rl   CreateRouterCallabler   r   r   r   r&   r&   r&   r'   <module>   sl      	


,