async def work():
asyncio.sleep(3)
@router.get('')
async def test():
time1 = monotonic()
... # need to call work
time2 = monotonic()
return TestResponse(time=time2-time1)
work
函数在同一时间只能调用一次。我需要编写test
函数,这样如果我在同一时间多次调用端点,我会得到响应:time
=与先前呼叫相差至少3秒的时间。
2条答案
按热度按时间yzuktlbb1#
我不知 prop 体的时间安排,但是您可能想看看
asyncio.Lock
,然后您可以执行以下操作这应该可以保证,如果两个请求调用您的端点,其中一个将等待另一个。
9njqaruj2#
因此,您需要一个速率限制器-将其限制为每3秒1次调用信号量
你可以试试这个代码: