I want to create a scheduler that will run every hour in my Flask application. To do this, I use the APScheduler library. Here is the most basic source code I could find online:
from apscheduler.scheduler import Scheduler import atexit cron = Scheduler(daemon=True) cron.start() @cron.interval_schedule(minutes=1) def job_function(): print("Hi") atexit.register(lambda: cron.shutdown(wait=False))
When I try to run my application, I get the following error:
Traceback (most recent call last): File "/home/dimitar/Desktop/dev/Tradiebot/local/WorxManager/backend/Server/app.py", line 31, in <module> def job_function(): File "/usr/lib/python3.9/site-packages/apscheduler/scheduler.py", line 405, in inner func.job = self.add_interval_job(func, **options) File "/usr/lib/python3.9/site-packages/apscheduler/scheduler.py", line 347, in add_interval_job return self.add_job(trigger, func, args, kwargs, **options) File "/usr/lib/python3.9/site-packages/apscheduler/scheduler.py", line 285, in add_job if not self.running: File "/usr/lib/python3.9/site-packages/apscheduler/scheduler.py", line 148, in running thread_alive = self._thread and self._thread.isAlive() AttributeError: 'Thread' object has no attribute 'isAlive'
After a bit of research, I found that other people on python 3.9 have experienced a similar issue, but I found no solution to the problem.
I do not want to downgrade my python version in fear that it will effect other libraries I am using as some of them are new and not developed to run on older versions of python.
Is there a workaround or an alternative library I can use to schedule a task to run in specified time intervals on a flask application?
Advertisement
Answer
That code looks like it belongs to APScheduler 2.x which has not been updated in 7 years. Upgrade and the problem goes away.