在Tornado中创建循环请求

时间:2013-03-21 15:08:56

标签: 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)

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请求以读取传感器的响应。传感器读取命令与响应之间有一段时间。

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

相反,如果http请求正在循环中执行,则有一种方法...就像请求等待响应然后停止继续执行程序一样。

如果感到困惑,谢谢。但是我很难解释这个问题。

0 个答案:

没有答案