前言
首先描述下业务场景,有一个接口,其中存在耗时操作,耗时操作的执行结果将写入数据表中,不需要通过该接口直接返回。
因此理论上该接口可以在耗时操作执行结束前返回。本文中使用多线程后台运行耗时操作,主线程提前返回,实现接口的提前返回。
此外,还尝试使用协程实现,经验证,协程适用于多任务并发处理,遇到耗时操作时自动切换任务,可以缩短多任务总的执行用时,而无法缩短单任务的执行用时,无法实现提前返回,因此不适用该场景。

1 同步任务
如下所示,定义任务,模拟耗时操作。
Python学习交流Q群:906715085###
import time
def task():
print("task start")
print("sleep...")
time.sleep(10)
print("task end")
如下所示,main 函数中执行任务,return true 用于模拟接口的返回。
如果最后执行 print(“task_result={}”.format®) 表明是同步执行,否则是异步执行。
def main():
print("main start")
task()
print("main end")
return True
if __name__ == '__main__':
r = main()
print("task_result={}".format(r))
执行结果如下所示,表明是同步执行。
main start
task start
sleep...
task end
main end
task_result=True
对于接口来说,响应时间是非常重要的性能指标,因此可以通过异步执行实现接口的提前返回,进而降低接口响应时间。
2 异步任务
本文中提到的异步执行指的是后台运行某些代码或功能,不阻塞主程序。
异步执行的常规实现方式是使用多线程/多进程。

本文探讨如何在Python中实现异步任务,以实现接口的提前返回。通过多线程和装饰器,可以不阻塞主程序,达到接口提前返回的效果。然而,协程虽能提高多任务并发效率,但无法缩短单任务执行时间,故不适合此场景。总结来说,多线程适合后台运行和提前返回,而协程适用于多任务并发处理。
最低0.47元/天 解锁文章
1178

被折叠的 条评论
为什么被折叠?



