繁体   English   中英

使用 Python Schedule 同时运行多个调度作业

[英]Run multiple schedule jobs at same time using Python Schedule

我在 python 中使用cx Oracleschedule模块。以下是伪代码。

import schedule,cx_Oracle

def db_operation(query):
    '''
    Some DB operations like
    1. Get connection
    2. Execute query
    3. commit result (in case of DML operations)
    '''


schedule.every().hour.at(":10").do(db_operation,query='some_query_1')    # Runs at 10th minute in every hour
schedule.every().day.at("13:10").do(db_operation,query='some_query_2')   # Runs at 1:10 p.m every day

上面的两个scheduled jobs calls the same function (它执行一些数据库操作)并且将在 13:10 重合

问题:

  1. 那么调度程序如何处理这种情况呢? 就像同时运行 2 个作业 即使时间相同,它是否会放入某种队列并一个接一个地运行? 或者它们是平行的?
  2. 哪个先被选中 如果我希望priority of first job over second ,该怎么做?
  3. 另外,重要的是一次only one of these should be accessing the database ,否则可能导致数据不一致 如何处理这种情况? 比如在访问 function 时是否可以加锁,或者应该以某种方式锁定表?

我看了一下 schedule 的代码,得出以下结论:

  1. 计划库不能并行或并发工作。 因此,已过期的作业将一个接一个地处理。 它们根据截止日期进行排序。 过去最应该执行的作业最先执行。
  2. 如果作业同时到期,则根据 FIFO 方案安排执行作业,以创建作业。 因此,在您的示例中, some_query_1将在some_query_2之前执行。
  3. 问题三实际上是不言自明的,因为一次只能执行一个 function。 因此,这些功能实际上不应相互妨碍。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM