AP 调度程序未运行 - "func must be a callable or a textual reference to one"



我正在尝试运行一个脚本,该脚本从在线源提取数据,然后在指定时间通过电子邮件发送给我。这个想法是从另一个Python脚本运行这个脚本,该脚本使用APScheduler来运行初始脚本。我想创建两个脚本的原因是,我想使用cx_freeze之类的东西从第二个脚本中制作一个exe文件,该文件将在我的电脑后台运行,这样就不必一直打开我的IDE。

我在第二个脚本中的代码如下:

from apscheduler.schedulers.blocking import BlockingScheduler
import initial_script
import os
if __name__ == '__main__':
scheduler = BlockingScheduler()
scheduler.add_job(initial_script, trigger='cron', day_of_week='mon-fri', hour='18', minute='30')
print('Press Ctrl+{0} to exit'.format('Break' if os.name == 'nt' else 'C'))
try:
scheduler.start()
except (KeyboardInterrupt, SystemExit):
pass

initial_script是主要的python文件,它实际上提供了我需要的信息。我主要使用的APScheduler代码来自Github repo,然后我查阅了这个链接,以更好地理解使用__name__ = '__main__'代码的目的(我觉得这就是问题所在(。在"initial_script"文件中,我没有在任何地方使用__name__ = '__main__'

我已经确保这两个文件都保存为.py格式——最初我试图将.py中的脚本运行到jupyter笔记本.ipynb中,但这导致了更多问题。

当我从第二个脚本运行"initial_script"中的代码时,它确实在我收到电子邮件时运行,但调度程序/触发器给了我一个错误,没有运行。

我现在得到的错误如下:TypeError:func必须是一个可调用的或对一个的文本引用

请你帮忙解释一下我做错了什么?

add_job()方法要求您向它传递一个可调用的。您正在传递一个模块,但无法调用该模块(不能执行initial_script()(。也许可以尝试将该模块中定义的函数传递给它?

相关内容

最新更新