Я создаю приложение FastAPI с конечной точкой для запуска вычисления Dask. Конечная точка API отправляет этот вызов планировщику Dask и просто возвращает ключ Future
.
trigger
x = client.submit
(
function_name,
arg1,
arg2
)
return x.key
У меня есть две другие конечные точки для получения статуса и результата задачи, которые принимают key
в качестве входных данных.
status
status = Future(key=key, client=client).status
return status
result
result = Future(key=key, client=client).result()
return result
Конечно, таким образом я теряю ссылку на будущее после возврата trigger
, и в этом случае Даск больше не вычисляет это. Таким образом, даже если ключ будет отдан клиенту, мы навсегда получим статус pending
.
Сейчас я сохраняю ссылки на объект Future как словарь Python в приложении, и это работает. Но в идеале я бы хотел, чтобы мое приложение API не имело состояния. Что будет хранить эти фьючерсы вне этого приложения? Есть ли в Python хорошие библиотеки кеширования, которые могут хранить объекты Python (со ссылками)?