0

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

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

我写了一个命令发送到数据库中的传感器。然后,我向另一个数据库发出 http 请求以读取传感器的响应。在传感器读取命令与其对详细信息的响应之间有一段时间。

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

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

谢谢,如果混淆了。但是我很难解释这个问题。

4

0 回答 0