为什么一个程序如果手动激活会很好地工作,而不是作为使用 crontab、mysql 和 python 的守护进程?
Why would a program work well if activated manually but not as a daemon using crontab, mysql and 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
我试过从另一个程序调用它,并且已经作为一个单独的程序调用它。根本没用。
求助。
sudo 不在 crontab 命令中 运行。它通常需要配置显式 tty 或 visudo 异常。
如果您确实需要 sudo 权限,请在 root 用户下配置此 crontab(不使用 sudo),您似乎已经在这样做了。就这些了。
即
sudo su
crontab -e
@reboot python /home/pi/Desktop/DataBase.py
这种情况的解决方案是:程序需要互联网连接,然后它需要一些时间才能开始提供足够的时间,因此 OS 出现并建立互联网连接。解决了向程序添加计时器或睡眠以便首先连接互联网的问题。
我们有这段代码,其目的只是在 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
我试过从另一个程序调用它,并且已经作为一个单独的程序调用它。根本没用。
求助。
sudo 不在 crontab 命令中 运行。它通常需要配置显式 tty 或 visudo 异常。
如果您确实需要 sudo 权限,请在 root 用户下配置此 crontab(不使用 sudo),您似乎已经在这样做了。就这些了。
即
sudo su
crontab -e
@reboot python /home/pi/Desktop/DataBase.py
这种情况的解决方案是:程序需要互联网连接,然后它需要一些时间才能开始提供足够的时间,因此 OS 出现并建立互联网连接。解决了向程序添加计时器或睡眠以便首先连接互联网的问题。