首页 > 解决方案 > 为什么如果手动激活程序但不能作为使用 crontab、mysql 和 python 的守护程序激活,程序会运行良好?

问题描述

我们有这段代码,其目的只是为了在 MySQLWorkbench 的数据库中发布:

import pymysql.cursors
import os, time
import datetime

#Conexion a la base de datos
conn = pymysql.connect(‘example.example.us-west-2.rds.amazonaws.com', user= ‘xxxx', port= xxxx,     passwd = ‘xxxxx', db=‘xxxx')

def query():
    fecha = (str) (datetime.datetime.now())
    nfecha = fecha.split(' ')
    dia = nfecha[0]
    hora = nfecha[1]
    tabla='notificaciones'
    idcliente='1'
    notificacion='hola'
    tipo='saludo'
    with conn.cursor() as cursor:
        cursor.execute('insert into notificaciones(idcliente, notificacion, tipo, fecha, hora)     values(%s, %s, %s, %s, %s)', (idcliente, notificacion, tipo, dia, hora))
        conn.commit()

    print('success')


def main():
    query()

main()

在控制台中手动执行时,代码运行良好,但是,当我们想将其设置为守护进程时,使用 crontab,它什么也不做。

在 crontab 中尝试过这种方式:

sudo su
crontab -e
@reboot sudo python /home/pi/Desktop/DataBase.py

我试过从另一个程序调用它,并且已经作为一个单独的程序调用它。它根本不起作用。

帮助。

标签: pythonmysqlcronpymysql

解决方案


sudo 不在 crontab 命令中运行。它通常需要配置显式的 tty 或 visudo 异常。

如果您确实需要 sudo 权限,请在 root 用户下配置此 crontab(不带 sudo),您似乎已经在这样做了。就这些了。

IE

sudo su
crontab -e
@reboot python /home/pi/Desktop/DataBase.py

推荐阅读