Python按时间间隔执行逻辑

问题描述 投票:0回答:1

我想生成 值集基于时间间隔的某些对象属性。为了生成值,我正在调用一些自定义的generateValues()方法。

重要!间隔将有一个共同的除数(时间间隔是5的倍数或任何其他数字)。

这是我的课程

class RequestTimer:

    def __init__(self, start_date, end_date, interval):
        self.start_date = start_date
        self.end_date = end_date
        self.interval = interval

为简洁起见,我将使用3个对象作为示例,但在现实生活中,我可能要生成数千个值集

  1. 值集1:从日期x到y每隔5分钟生成一次
  2. 值集2:从日期y到z以20分钟的间隔生成
  3. 值集3:从日期a到b以25分钟的间隔生成

我想通过每interval_step分钟递归执行相同的函数来解决此任务,然后获取所有iteration * interval_step除数,并在可用除数内生成值集,但是在这种方法下,我必须进行大量检查。

有没有图书馆可以帮助我呢?

谢谢!

python scheduler chrono chronometer
1个回答
0
投票

我自己找到了解决此类任务的方法:有一个名为AppScheduler的python库,请检查它here

代码示例:

import os
from datetime import datetime

from apscheduler.schedulers.tornado import TornadoScheduler
from tornado.ioloop import IOLoop


def tick():
    print('Tick! The time is: %s' % datetime.now())


def tick2():
    print('Tick2! The time is: %s' % datetime.now())


if __name__ == '__main__':
    scheduler = TornadoScheduler()
    scheduler.add_job(tick, 'interval', seconds=3)
    scheduler.add_job(tick2, 'interval', seconds=6)
    scheduler.start()
    print('Press Ctrl+{0} to exit'.format('Break' if os.name == 'nt' else 'C'))

    # Execution will block here until Ctrl+C (Ctrl+Break on Windows) is pressed.
    try:
        IOLoop.instance().start()
    except (KeyboardInterrupt, SystemExit):
        pass
© www.soinside.com 2019 - 2024. All rights reserved.