Python 在Flask应用程序内运行计划任务时出现线程错误

Python 在Flask应用程序内运行计划任务时出现线程错误,python,apscheduler,Python,Apscheduler,我想创建一个调度程序,它将在我的Flask应用程序中每小时运行一次。为此,我使用APScheduler库。以下是我可以在网上找到的最基本的源代码: from apscheduler.scheduler import Scheduler import atexit cron = Scheduler(daemon=True) cron.start() @cron.interval_schedule(minutes=1) def job_function(): print("Hi

我想创建一个调度程序,它将在我的Flask应用程序中每小时运行一次。为此,我使用APScheduler库。以下是我可以在网上找到的最基本的源代码:

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))
当我尝试运行应用程序时,出现以下错误:

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'
回溯(最近一次呼叫最后一次):
文件“/home/dimitar/Desktop/dev/Tradiebot/local/WorxManager/backend/Server/app.py”,第31行,在
def job_函数():
文件“/usr/lib/python3.9/site packages/apscheduler/scheduler.py”,第405行,在内部
func.job=self.add\u interval\u job(func,**选项)
文件“/usr/lib/python3.9/site packages/apscheduler/scheduler.py”,第347行,在添加作业中
返回self.add_作业(触发器、func、args、kwargs、**选项)
文件“/usr/lib/python3.9/site packages/apscheduler/scheduler.py”,第285行,在添加作业中
如果不是自动运行:
文件“/usr/lib/python3.9/site packages/apscheduler/scheduler.py”,第148行,正在运行
thread\u alive=self.\u thread和self.\u thread.isAlive()
AttributeError:“线程”对象没有属性“isAlive”
经过一番研究,我发现python 3.9上的其他人也遇到过类似的问题,但我没有找到解决问题的方法

我不想降级我的python版本,因为我担心它会影响我正在使用的其他库,因为其中一些库是新的,并且不是为在旧版本的python上运行而开发的


是否有一种变通方法或替代库可用于安排任务在flask应用程序的指定时间间隔内运行?

Python3.9已弃用
Thread.isAlive
:。因此,请系好安全带,解决您的恐惧,因为您的一个依赖项(
apscheduler
)需要
,该代码看起来属于apscheduler 2.x,它已经7年没有更新过了。升级后问题就消失了。

实际上,我出错的原因是我试图运行遗留代码。我发现用来测试库的代码是多年前编写的。我发现了一个更新的代码段,在更新到最新版本的apscheduler后,它工作正常。事实上,正如我对@Shine的回答所作的评论,我确实对代码段的版本有问题。我想复制堆栈溢出时出现的第一件事情并不总是解决问题。在更新到最新版本并修改我的代码后,它工作得非常完美。