45 lines
1.4 KiB
Python
45 lines
1.4 KiB
Python
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)
|