将通知作为定时任务
我写了一个Python应用程序,它之前作为定时任务(cron job)运行得很好。后来我添加了一些库,比如pynotify
等,因为我想收到一些消息通知,告诉我发生了什么事情,但似乎定时任务无法运行这样的应用程序。
你知道有什么其他方法可以每五分钟运行一次这个应用程序吗?我在使用Xubuntu。
import gtk, pygtk, os, os.path, pynotify
我可以在没有定时任务的情况下顺利运行这个应用程序。
定时任务似乎能启动这个应用程序,但它不会显示通知消息。在/var/log/cron.log
里没有错误记录。这个应用程序每分钟都能正常执行。
我的定时任务设置是:
*/1 * * * * /home/xralf/pythonsrc/app
谢谢你
4 个回答
0
我看不出使用pynotify的定时任务有什么问题?你遇到了什么错误呢?
你可以单独运行一下你的Python代码,看看它是否真的能正常工作,还是只有在定时任务下才出问题?
Celery是一个用Python写的分布式任务队列和任务管理工具,但可能对你的需求来说有点复杂。
如果你知道你的程序会在5分钟内关闭,Supervisord也可以做一些类似定时任务的事情。你可以设置Supervisord在程序关闭后不久就重新启动任务。不过,它们都没有定时任务那么简单。
1
如果这个定时任务是以“你”的身份运行,并且你设置了显示变量(export DISPLAY=:0),那么应该不会有任何问题。
1
如果你的Python脚本单独运行没问题,但在cron
中运行时出错,那很可能是因为在cron
中没有设置好库的路径。下面是我一个cron
任务的例子,我在执行文件之前添加了库的路径。
00 12 * * * LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib && export LD_LIBRARY_PATH && /path/to/my/script
你需要把上面的路径替换成你自己库的实际路径。