0

我正在构建一个 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返回后失去了对未来的引用,在这种情况下,Dask 不再计算它了。因此,即使将密钥提供给客户端,我们也会获得pending永久的状态。

我现在正在做的是将 Future 对象的引用存储为应用程序中的 python 字典,这很有效。但理想情况下,我希望我的 API 应用程序是无状态的。什么会在这个应用程序之外存储这些期货?Python 中有没有很好的缓存库可以存储 Python 对象(带有引用)?

4

1 回答 1

-1

尝试使用 Flask + Celery 来处理后台 Dask 计算。以下是几个链接供参考:

  1. https://flask.palletsprojects.com/en/1.1.x/patterns/celery/
  2. https://blog.miguelgrinberg.com/post/using-celery-with-flask
  3. https://medium.com/@frassetto.stefano/flask-celery-howto-d106958a15fe
于 2020-12-14T08:41:57.377 回答