簡體   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