|
54 | 54 | from shapely.geos import PredicateError, ReadingError, TopologicalError
|
55 | 55 | from flask import g
|
56 | 56 | import flask
|
57 |
| -import pybreaker |
58 | 57 | from jormungandr import georef, schedule, realtime_schedule, ptref, street_network, fallback_modes
|
59 | 58 | from jormungandr.scenarios.ridesharing.ridesharing_service_manager import RidesharingServiceManager
|
60 | 59 | import six
|
@@ -139,10 +138,6 @@ def __init__(
|
139 | 138 | self.timezone = None # timezone will be fetched from the kraken
|
140 | 139 | self.publication_date = -1
|
141 | 140 | self.is_initialized = False # kraken hasn't been called yet we don't have geom nor timezone
|
142 |
| - self.breaker = pybreaker.CircuitBreaker( |
143 |
| - fail_max=app.config.get(str('CIRCUIT_BREAKER_MAX_INSTANCE_FAIL'), 5), |
144 |
| - reset_timeout=app.config.get(str('CIRCUIT_BREAKER_INSTANCE_TIMEOUT_S'), 60), |
145 |
| - ) |
146 | 141 | self.georef = georef.Kraken(self)
|
147 | 142 | self._streetnetwork_backend_manager = streetnetwork_backend_manager
|
148 | 143 |
|
@@ -722,21 +717,14 @@ def places_proximity_radius(self):
|
722 | 717 | instance_db = self.get_models()
|
723 | 718 | return get_value_or_default('places_proximity_radius', instance_db, self.name)
|
724 | 719 |
|
725 |
| - def send_and_receive(self, *args, **kwargs): |
726 |
| - """ |
727 |
| - encapsulate all call to kraken in a circuit breaker, this way we don't loose time calling dead instance |
728 |
| - """ |
729 |
| - try: |
730 |
| - return self.breaker.call(self._send_and_receive, *args, **kwargs) |
731 |
| - except pybreaker.CircuitBreakerError as e: |
732 |
| - raise DeadSocketException(self.name, self.socket_path) |
733 |
| - |
734 |
| - def _send_and_receive(self, request, timeout=app.config.get('INSTANCE_TIMEOUT', 10), quiet=False, **kwargs): |
| 720 | + def send_and_receive( |
| 721 | + self, request, timeout=app.config.get('INSTANCE_TIMEOUT', 10), quiet=False, request_id=None, **kwargs |
| 722 | + ): |
735 | 723 | deadline = datetime.utcnow() + timedelta(milliseconds=timeout * 1000)
|
736 | 724 | request.deadline = deadline.strftime('%Y%m%dT%H%M%S,%f')
|
737 | 725 |
|
738 |
| - if 'request_id' in kwargs and kwargs['request_id']: |
739 |
| - request.request_id = kwargs['request_id'] |
| 726 | + if request_id: |
| 727 | + request.request_id = request_id |
740 | 728 | else:
|
741 | 729 | try:
|
742 | 730 | request.request_id = flask.request.id
|
@@ -851,8 +839,7 @@ def init(self):
|
851 | 839 | req.requested_api = type_pb2.METADATAS
|
852 | 840 | request_id = "instance_init"
|
853 | 841 | try:
|
854 |
| - # we use _send_and_receive to avoid the circuit breaker, we don't want fast fail on init :) |
855 |
| - resp = self._send_and_receive(req, request_id=request_id, timeout=1, quiet=True) |
| 842 | + resp = self.send_and_receive(req, request_id=request_id, timeout=1, quiet=True) |
856 | 843 | # the instance is automatically updated on a call
|
857 | 844 | if self.publication_date != pub_date:
|
858 | 845 | return True
|
|
0 commit comments