tornado.ioloop.IOLoop.current().time() 不在我的时区,如何配置时区偏移?
tornado.ioloop.IOLoop.current().time() is not in my timezone, how to configure timezone offset?
tornado.ioloop.IOLoop.current().time() 给祖鲁语。我如何获得关于时区的时间以在 IOLoop.add_timeout(deadline) 中添加几秒作为截止日期,以便将来正确触发超时?
我的时间是+1h,它不会触发,因为60s i IOLoop.add_timeout(60) 已经过去了。但是在夏季我有 +2h 所以我必须在夏季和冬季正确添加我的时区偏移量...
幸运的是,这不是与时区相关的问题。让您感到困惑的可能是 deadline 与 delay 术语。值得庆幸的是 IOLoop.add_timeout
的文档非常清楚,
deadline may be a number denoting a time (on the same scale as IOLoop.time, normally time.time), or a datetime.timedelta object for a deadline relative to the current time. Since Tornado 4.0, call_later is a more convenient alternative for the relative case since it does not require a timedelta object.
代码如下:
IOLoop.current().add_timeout(60, some_func)
实际上意味着 运行 unix 纪元(1970 年 1 月 1 日 00:00:00 UTC)后 60 秒的函数,而不是从现在开始(time.time()
)。所以它会立即装配。
如文档所述,您可以
将延迟作为时间增量对象传递
import datetime
IOLoop.current().add_timeout(datetime.timedelta(seconds=60), some_func)
-
IOLoop.current().call_later(delay=60, some_func)
tornado.ioloop.IOLoop.current().time() 给祖鲁语。我如何获得关于时区的时间以在 IOLoop.add_timeout(deadline) 中添加几秒作为截止日期,以便将来正确触发超时?
我的时间是+1h,它不会触发,因为60s i IOLoop.add_timeout(60) 已经过去了。但是在夏季我有 +2h 所以我必须在夏季和冬季正确添加我的时区偏移量...
幸运的是,这不是与时区相关的问题。让您感到困惑的可能是 deadline 与 delay 术语。值得庆幸的是 IOLoop.add_timeout
的文档非常清楚,
deadline may be a number denoting a time (on the same scale as IOLoop.time, normally time.time), or a datetime.timedelta object for a deadline relative to the current time. Since Tornado 4.0, call_later is a more convenient alternative for the relative case since it does not require a timedelta object.
代码如下:
IOLoop.current().add_timeout(60, some_func)
实际上意味着 运行 unix 纪元(1970 年 1 月 1 日 00:00:00 UTC)后 60 秒的函数,而不是从现在开始(time.time()
)。所以它会立即装配。
如文档所述,您可以
将延迟作为时间增量对象传递
import datetime IOLoop.current().add_timeout(datetime.timedelta(seconds=60), some_func)
-
IOLoop.current().call_later(delay=60, some_func)