用python做服务器,如何实现异步的延迟调用函数
学习python没多久,之前也没有太多编程的经验。我就具体描述一下我面临的具体问题和希望实现的效果,请大家给点建议。如果觉得我的问题描述的不清楚,也请回帖指出,谢谢。
我用django框架来做服务器完成一些逻辑,现在有这样一个问题需要解决:
我自己的服务器为A,需要与另外一个第三方的服务器B互相发送一些HTTP的请求,完成一些逻辑。流程如下:
1、首先是服务器B向我的服务器A发起了一个请求X,
2、然后我的服务器A对这个请求X进行处理,
3、我的服务器A处理完成后,给第三方服务器B发送一个HTTP处理的返回数据。另外需要在延迟10秒钟后,主动向服务器B再发起一个请求Y。向服务器B确认一下刚才的请求X的处理结果是否已经收到了。
我的问题就在于加粗部分的功能不会做了。
因为我的服务器A会收到很多的请求,有来自服务器B的请求,还有很多其他客户端的请求。按照我的理解,每次收到一个请求,服务器就需要启动一个线程来对这个请求进行处理,当前的请求处理完成后,线程就可以接下来处理其他的请求。如果我这里延迟10秒钟再发起请求,那么这个线程就会一直阻塞,无法处理别的请求。影响服务器的性能。
我想要的解决办法是当收到请求X后,执行完处理逻辑,给服务器B发送返回的数据后,这个线程就结束了。可以继续处理别的请求了。而10秒钟延迟后主动发起请求的功能,不要一直阻塞这个线程的执行。
我大概的想法是,写一个新的类,这个类有一个方法DELAYCALL,可以启动一个计时器,然后计时器计时10秒钟后,触发一个事件,在这个事件的处理函数中主动给服务器B发送请求Y。
这样我在写处理服务器B的请求X的代码时,最后执行一下这个类的DELAYCALL方法,然后就给服务器B返回请求的数据。这样这个线程就结束了。而延迟10秒后,会通过触发事件来完成主动发送请求的功能。
我不知道我自己这么想对不对,能不能达到想要的效果。如果不行,请大家帮忙指点一下该如何来解决这个问题。