我正在为web服务创建一个API。这个API中有几个端点需要一些时间(比如+5分钟)来计算,所以我正在创建一个预取系统,它每隔一段时间就会调用这个端点并缓存结果,当用户调用这个端点时,他们将得到缓存的响应,而无需等待很长时间。所有这些端点调用的函数将做三件事:
我对这个端点有很多问题,因为每次这个预取系统出现故障或任何问题时,它们都会暴露给所有用户,如果一个用户提出请求,并且没有缓存的响应,那么端点将开始计算,这需要花费大量的时间。我不知道该如何处理这个问题,我可以添加一个参数prefetch来查询和处理数据,如果数据是从预取系统调用的,否则只需查询数据库中存储的已处理数据,如果DB中没有数据,它将返回一个空的响应,但我认为这比现在发生的情况要好得多。
下面是Python中给定端点的函数示例:
@cache
def calculate_weather():
# Call some APIs and do some operations
# Store the processed data in DB
# return the processed data这就是我想要做的:
@cache
def calculate_weather(prefetch):
if prefetch:
# Call some APIs and do some operations
# Store the processed data in DB
else:
# Get the processed data from DB
# return the processed data在第二个示例中,API端点调用的函数将具有一个布尔参数prefetch,该参数仅在调用函数时才等于True。我认为这样可以解决这个问题,但也许我还能做些什么,有什么建议吗?
发布于 2021-12-05 10:06:36
井
https://softwareengineering.stackexchange.com/questions/434043
复制相似问题