Esempio n. 1
0
def get_timedout_locks():
	"Get list of stale locks from all sites"
	old_locks=[]
	for site in frappe.utils.get_sites():
		locksdir = os.path.join(site, 'locks')
		for lock in os.listdir(locksdir):
			lock_path = os.path.join(locksdir, lock)
			try:
				check_lock(lock_path)
			except LockTimeoutError:
				old_locks.append(lock_path)
	return old_locks
Esempio n. 2
0
def trigger(site, event, now=False):
	"""trigger method in startup.schedule_handler"""
	from frappe.tasks import scheduler_task

	for handler in frappe.get_hooks("scheduler_events").get(event, []):
		if not check_lock(handler):
			if not now:
				scheduler_task.delay(site=site, event=event, handler=handler)
			else:
				scheduler_task(site=site, event=event, handler=handler, now=True)
Esempio n. 3
0
def enqueue_scheduler_events():
	for site in get_sites():
		enqueue_lock = os.path.join(site, 'locks', 'enqueue.lock')
		try:
			if check_lock(enqueue_lock, timeout=1800):
				continue

			touch_file(enqueue_lock)

			enqueue_events_for_site.delay(site=site)

		except LockTimeoutError:
			os.remove(enqueue_lock)