大家好我有这部分代码:
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请求正在循环中执行,则有一种方法...就像请求等待响应然后停止继续执行程序一样。
如果感到困惑,谢谢。但是我很难解释这个问题。