【问题标题】:Crontab job for python script with database connection not working数据库连接不起作用的python脚本的crontab作业
【发布时间】:2021-09-24 14:15:53
【问题描述】:

首先测试了像这样简单的东西,它有效:

* * * * * echo "something" > /Users/sam/Desktop/vscode/crontest.txt

正在尝试

28 10 * * * /Users/user/Desktop/work/venv/bin/python /Users/user/Desktop/work/py_files/test.py

但是什么都没有发生。

python 脚本从 API 中提取一些数据,解析 JSON 并输出到本地 mysql db

engine_insert = sqlalchemy.create_engine('mysql+pymysql://root:password@127.0.0.1:3306/database')
df.to_sql('database', engine_insert, if_exists='append', index=False)

但其他更简单的 crons 我也遇到过问题,比如通过浏览器打开网站,所以可能只是 crontab 的语法问题?

【问题讨论】:

    标签: python cron


    【解决方案1】:

    我遇到了同样的问题,我花了几天的时间来看看我的问题出在哪里。所以,尝试两件事:

    1- 请按照以下步骤/说明进行操作: https://stackoverflow.com/a/22744360/2080489

    2- 如果您仍然遇到问题,请尝试停止您拥有的任何可能影响连接的安全模块。就我而言,我使用的是 Ubuntu,所以我停止了 AppAromr:

    sudo systemctl stop apparmor 
    

    或者如果你想禁用它

    sudo systemctl disable apparmor 
    

    通过以下方式检查应用状态:

    sudo systemctl status apparmor 
    
    • 您可能需要在停止应用后重新启动计算机。

    希望这会对你有所帮助。

    【讨论】:

    • 不建议停止 AppArmor(您可以了解更多信息here)。但是,您可以这样做apt-get install apparmor-utils,然后使用sudo aa-complain /sbin/cron,这将使应用程序处于抱怨模式。这意味着它只会记录问题。然后,您可以使用 sudo aa-enforce /sbin/cron 将其返回给规则执行。我还建议您查看 creating profiles for AppArmor 以指定您的应用程序可以访问的内容。
    • 知道了!谢谢法里斯。
    猜你喜欢
    • 2013-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多