我对龙卷风有概念上的疑问。
我有一个针对 twitter api 运行的查询列表。
所以我有类似的东西
while (keywords):
if (requests.remaining > 300) :
self.twitter_request(path= "/search",access_token=self.current_user["access_token"],
callback=(yield gen.Callback("key")),q=word)
response = yield gen.Wait("key")
self.parse_response(response)
else:
sleep(3000)
并且 parse_response 被定义为
def parse_response(self,response):
//parse the response object
//check if number of results returned is 100. If yes then, check current page number.
//if less than 4 then
self.twitter_request(path= "/search",access_token=self.current_user["access_token"],
callback=self.async_callback(self._parse_response,fileIter= fileIter,fileType= fileType, query= query),q=query,rpp="100")
return
所以基本上我的 parse_response 函数正在解析响应并为同一关键字请求更多页面,直到 page_number 为 4。
但是在调用这个辅助函数的主循环中,当我调用 time.sleep(3000) 时被挂起。这甚至会使后台函数进入睡眠状态,因为主线程正在睡眠,并且一旦主线程处于活动状态,它们就会恢复。(由于我最初请求关键字并且 parse_Response 正在使用 async_Callback,因此在执行 sleep(3000) 命令时不会执行这些异步回调)。即使主类发出睡眠命令,有没有办法让后台处理运行。