如何在不同的 Celery 任务中保留经过身份验证的 API 对象?

How can I persist an authenticated API object across different Celery tasks?

如何在不同的 Celery 任务中保留一个 API 对象?每个用户有一个 API 对象,具有经过身份验证的会话(python 请求)以进行 API 调用。每个请求都会发送 user_id、csrftoken 等。

我需要在 Celery 中安排不同的任务来执行 API 请求,而无需为每个任务重新验证。

我该怎么做?

您可以将这些数据放入 database/memcache 并通过 userid 作为键获取。

如果这些数据是无状态的 - 没关系。并发进程获取身份验证参数,构造请求并发送它。

如果它在每次请求后(或在某些请求中)更改状态(唯一递增请求 ID、更改令牌等)- 您需要实施单例管理器以按请求提供正确的凭据。所有任务都应向该经理请求凭​​据。它还可以限制速率,例如。

如果您想将此对象作为参数传递给任务 - 那么您需要对其进行序列化。只要确保它是可序列化的。