2012-06-20 27 views
16

Có một lệnh tương đương trong cơn lốc xoáy cho chức năng chậm trễ mà không ảnh hưởng quá trình chính để ngủ (do đó callbacks sẽ thực hiện ngay cả khi các chủ đề chính được dealying một chức năng gọi mới)cơn lốc xoáy tương đương chậm trễ

+0

Không hoàn toàn chắc chắn những gì bạn đang yêu cầu. Bạn có thể đưa ra một ví dụ? –

Trả lời

28

Hãy thử điều này:

import time 
from tornado.ioloop import IOLoop 
from tornado.web import RequestHandler, asynchronous 
from tornado import gen 

class MyHandler(RequestHandler): 
    @asynchronous 
    @gen.engine 
    def get(self): 
     self.write("sleeping .... ") 
     self.flush() 
     # Do nothing for 5 sec 
     yield gen.Task(IOLoop.instance().add_timeout, time.time() + 5) 
     self.write("I'm awake!") 
     self.finish() 

Lấy từ here.

+0

cảm ơn ... – Gaurav

5

Có thể dư thừa

Tôi thích gọi lại phong cách

class MyHandler(RequestHandler): 
    @asynchronous 
    def get(self): 
     self.write("sleeping .... ") 
     self.flush() 
     IOLoop.instance().add_timeout(time.time() + 5, self._process) 

    def _process(self) 
     # Do nothing for 5 secs 
     self.write("I'm awake!") 
     self.finish() 
17

Lưu ý rằng kể từ 4.1 họ đã thêm một phương pháp gen.sleep(delay).

nên

yield gen.Task(IOLoop.instance().add_timeout, time.time() + 5) 

sẽ chỉ trở thành

yield gen.sleep(5) 
Các vấn đề liên quan