Crontab 无法正常工作,但日志显示相反

Crontab not working properly but log shows the opposite

我正在开发一个小型 ETL,它使用网络抓取收集数据、清理和操作数据并将其发送到本地 sqlite3 数据库。

如果我执行命令 /virtualenv_path/python /script_path/script.py 它运行完美,但是如果我用 crontab 安排这个命令它就不起作用。

它只是不发送任何数据。但是,我的日志文件显示 crontab 正在按预期使用我的 venv 执行 script.py。

所以,这是怎么回事?我应该怎么做才能解决这个问题?

我想我的脚本并没有错,因为如果我在没有 crontab 的情况下执行,它会完美运行,即使使用 crontab,它也不会显示任何错误(正如我所说,日志文件表明一切进展顺利)

这是我的存储库:https://github.com/raposofrct/wescraping-ETL 那里有 ETL 文件夹,其中包含我的脚本、我正在使用的 crontab 命令和我的 sqlite 数据库。

感谢你们给我的任何帮助或线索。

您的脚本可能正在运行,但它没有将数据放入您正在查看的数据库文件中。 hm_db.sqlite is relative to whatever the current working directory is:

DataBase(dados,create_engine('sqlite:///hm_db.sqlite',echo=False))

这不太可能与您手动 运行 脚本时所在的目录相同。要么提供一个绝对路径,要么使路径相对于你的脚本目录,例如

from pathlib import Path


root_directory = Path(__file__).parent
database_file = root_directory / "hm_db.sqlite"

DataBase(dados, create_engine(f"sqlite:///{database_file}", echo=False))

或者,在您现有的脚本中记录 os.getcwd() 以确定您的 cronjob 存储数据的位置。