【发布时间】:2022-02-04 01:13:31
【问题描述】:
我正在开发一个小型 ETL,该 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 数据库。
感谢你们能给我的任何帮助或线索。
【问题讨论】:
-
您是否尝试过在同一个目录中使用另一个脚本,将一行右移到文件中,以检查您的 Cron 条目?
-
“它只是不发送任何数据”——这里的“发送”是什么意思?您使用的是哪个用户的 crontab,该用户是否具有 SQLite 文件的写入权限?你检查过local mail that cron would sent when errors occur吗?
-
@Kendle,是的,而且效果很好。我创建了一个 crontab 命令,该命令创建了一个文件夹并将其删除。
-
@Chris 首先,当我说“不发送数据”时,我说当我加载我的表时,它只显示已经收集的数据,因此没有数据被附加到数据库表中。关于 crontab 用户,我没有指定任何 crontab 用户。我想我需要更深入地检查一下。
-
尝试在create_engine中使用绝对路径('sqlite:///full/path/to/hm_db.sqlite',echo=False)
标签: python web-scraping cron etl