Asynchronous 在Tornado中创建循环请求

Asynchronous 在Tornado中创建循环请求,asynchronous,httprequest,tornado,Asynchronous,Httprequest,Tornado,大家好,我有这部分代码: self.lock_tables("write", ['confcommands']) self.db.execute("INSERT INTO confcommands (network_id, ntype, timestamp, command) \ VALUES (%s,%s,%s,%s)", nid, mynet_type, ts, cmdjson) self.unlock_tables(); time.sleep(5) c

大家好,我有这部分代码:

self.lock_tables("write", ['confcommands'])
self.db.execute("INSERT INTO confcommands (network_id, ntype, timestamp, command) \
                 VALUES (%s,%s,%s,%s)", nid, mynet_type, ts, cmdjson)
self.unlock_tables();

time.sleep(5)

como_url = "".join(['http://', options.como_address, ':', options.como_port, 
                            '/ztc_config?netid=0&opcode_group=0&opcode=0&start=-20s&end=-1s'])

http_client = AsyncHTTPClient()
#response = yield tornado.gen.Task(http_client.fetch, como_url)
request = tornado.httpclient.HTTPRequest(url=como_url, connect_timeout=5.0, request_timeout=5.0)
print request.request_timeout
response = yield tornado.gen.Task(http_client.fetch, request)
print response
我写了一个命令,将其发送到DB中的传感器。然后,我向另一个DB发出http请求以读取传感器的响应。从传感器读取命令到其对细节的响应之间有一段时间

我认为使用异步decorator和yield gen.任务,我可以得到响应,就像服务器正在等待一样。但是我必须在代码中加入time.sleep来停止程序并等待响应

相反,如果http请求是在循环中执行的,则有一种方法可以这样做。。。如请求等待响应,然后停止继续程序


谢谢,如果有问题,对不起。但我很难解释这个问题

使用
time.sleep()
use
IOLoop.add\u timeout
检查是否有问题,但无论如何我都不想停止程序。我看到Tornado中有一个PeriodicCallback方法?我能用这个吗?对不起,我是个初学者,但是数据库驱动程序正在阻塞,所以如果你异步获取页面,每次调用数据库你都会阻塞程序