Skip to content

Schedules jobs too often if multiple threads are present #630

@Klimroth

Description

@Klimroth

If I schedule two jobs and each job should be run in one thread, the following minimal example does not work

`import schedule
import threading
import time
from datetime import datetime

def do_task_1() -> None:
print(f"{datetime.now().isoformat()} - task 1 execution - thread {threading.current_thread().name} \n")

def do_task_2() -> None:
print(f"{datetime.now().isoformat()} - task 2 execution - thread {threading.current_thread().name} \n")

def task_1_sheduler() -> None:
schedule.every(10).seconds.do(do_task_1)
while True:
time.sleep(1)
schedule.run_pending()

def task_2_sheduler() -> None:
schedule.every(14).seconds.do(do_task_2)
while True:
time.sleep(1)
schedule.run_pending()

def start_thread_1() -> None:
t = threading.Thread(target=task_1_sheduler)
t.start()

def start_thread_2() -> None:
t = threading.Thread(target=task_2_sheduler)
t.start()

start_thread_1()
start_thread_2()
`

I would expect it to conduct do_task_2 every 14 seconds on thread 2 and do_task_1 independently every 10 seconds on thread 1, but it mixes things up

image001

What am I doing wrong?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions