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 存储数据的位置。
我正在开发一个小型 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 存储数据的位置。