from requests_opentracing import SessionTracing import opentracing import json from urllib.parse import urljoin import redis from config import Config class Feeder: def __init__(self): self._session = SessionTracing(propagate=True) self._redis_client = redis.from_url(Config.REDIS_URL) def do_feed(self, tag: str, mimetype: str = 'audio/wave'): with opentracing.tracer.start_active_span('feeder.getFromCache'): sample_data = self._redis_client.get(tag) with opentracing.tracer.start_active_span('feeder.uploadToStorageService'): with opentracing.tracer.start_active_span('uploadToStorageService'): files = { 'description': (None, json.dumps({'tag': tag}), 'application/json'), 'soundFile': ( 'wave.wav', # <- this is not used by upstream sample_data, mimetype, { 'Content-Length': len(sample_data) } ) } r = self._session.post( urljoin(Config.STORAGE_SERVICE_URL, "object"), files=files ) r.raise_for_status() with opentracing.tracer.start_active_span('feeder.deleteFromCache'): self._redis_client.delete(tag)