使用Python Schedule同时运行多个计划作业

ycggw6v2  于 2022-11-21  发布在  Python
关注(0)|答案(1)|浏览(307)

我在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(执行一些 *DB操作 *)和将在13:10**重合。

问题:

1.那么,调度程序如何处理这种情况?* 比如同时运行2个作业 。它是否放入某种队列,即使时间相同也逐个运行?或者它们是并行的?
1.哪一个得到
第一个挑选*?如果我想要priority of first job over second,怎么做?
1.还有,* 重要的一点 * 是,在一个时间only one of these should be accessing the database,否则可能会导致 * 不一致的数据 *。如何处理这种情况?比如在访问函数时是否可能放置某种锁,或者是否应该以某种方式锁定表?

5sxhfpxr

5sxhfpxr1#

我看了一下时间表的代码,我得出了以下结论:
1.排程程式库不会平行或并行运作。因此,会依序行程已到期的工作。这些工作会根据其到期日排序。最早应执行的工作会先执行。
1.如果作业同时到期,则根据FIFO方案调度执行作业,考虑到作业的创建。因此,在您的示例中,some_query_1将在some_query_2之前执行。
1.第三个问题实际上是不言自明的,因为一次只能执行一个功能。因此,这些功能实际上不应相互妨碍。

相关问题