Initial import from Docker volume
This commit is contained in:
47
cron.py
Executable file
47
cron.py
Executable file
@@ -0,0 +1,47 @@
|
||||
# This file is part of Tryton. The COPYRIGHT file at the top level of
|
||||
# this repository contains the full copyright notices and license terms.
|
||||
import logging
|
||||
import threading
|
||||
import time
|
||||
|
||||
from trytond.pool import Pool
|
||||
from trytond.transaction import Transaction
|
||||
|
||||
__all__ = ['run']
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
def run(options):
|
||||
threads = []
|
||||
for name in options.database_names:
|
||||
thread = threading.Thread(target=lambda: Pool(name).init())
|
||||
thread.start()
|
||||
threads.append(thread)
|
||||
for thread in threads:
|
||||
thread.join()
|
||||
|
||||
threads = {}
|
||||
while True:
|
||||
for db_name in options.database_names:
|
||||
thread = threads.get(db_name)
|
||||
if thread and thread.is_alive():
|
||||
logger.info(
|
||||
'skip "%s" as previous cron still running', db_name)
|
||||
continue
|
||||
database_list = Pool.database_list()
|
||||
pool = Pool(db_name)
|
||||
if db_name not in database_list:
|
||||
with Transaction().start(db_name, 0, readonly=True):
|
||||
pool.init()
|
||||
Cron = pool.get('ir.cron')
|
||||
thread = threading.Thread(
|
||||
target=Cron.run,
|
||||
args=(db_name,), kwargs={})
|
||||
logger.info('start thread for "%s"', db_name)
|
||||
thread.start()
|
||||
threads[db_name] = thread
|
||||
if options.once:
|
||||
break
|
||||
time.sleep(60)
|
||||
for thread in threads.values():
|
||||
thread.join()
|
||||
Reference in New Issue
Block a user