微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Python模块/库可在CronJobs中正常工作

如何解决Python模块/库可在CronJobs中正常工作

我在使用cronjob执行从python脚本调用python模块pyautogui中执行功能时遇到问题。

我目前在Mac OS上运行此程序,并通过anaconda环境运行python。阅读了很多StackOverflow和StackExchange的帖子后,我能够找到这一对(here)的设置,它对设置我的PATH和env变量非常有帮助。能够成功地使python脚本与crontab中指定的作业一起运行。

但是,脚本的仅一行(取决于pyautogui模块)没有执行。正如大多数帖子所提到的那样,从终端手动运行时,此脚本运行没有问题,但通过cron不会产生相同的结果。

这是我的crontab,要在周一至周五上午730点运行;

SHELL=/bin/bash
HOME=/Users/harrisonw
PYTHONPATH=/Users/harrisonw/anaconda3/lib/python3.7/site-packages

30 7 * * 1-5  cd /Users/harrisonw/Documents/cron_jobs && /Users/harrisonw/anaconda3/bin/python3.7 online_status_pyautoguyi.py >> ~/Documents/cron_jobs/online_status_cron_output.txt 

这是我的剧本,上面是shebang;打开网址的超级简单逻辑,然后每五分钟刷新一次该网页,持续2个小时。

#!/Users/harrisonw/anaconda3/bin/python3.7

import os
import time
import pyautogui as py

refresh_counter= 0                  #counter for whileloop to break after certain number
url= "https://www.facebook.com"     #url to access and refresh

os.system("open " + url)            #opens url using os library
time.sleep(10)                      #wait 10 secs for webpage to load

while True:                         #loop refresh command for 2 hours
    time.sleep(300)                 #wait 5 mins 
    py.hotkey('command','r')       #calls hotkey function  "Command+R" to refresh page
    print("Refreshed")
    refresh_counter += 1            #count +1 for each refresh
    
    if refresh_counter == 24:       #condition to reach 24 refreshes in 5 min intervals= 2hrs
        break
    else:                           #continue loop if 24 is not reached. 
        continue

print(refreshed_counter)
print("\nComplete") 

py.hotkey('command','r')行是我寻求帮助的问题。

这是文件online_status_cron_output.txt中的输出,如上面的crobtab中所述,确认脚本已运行。

Refreshed
Refreshed
2
Complete

我怀疑我缺少指向pyautogui模块的附加PATH或crontab中的env变量,但不确定如何从此处继续。

也许是一个愚蠢的问题,但是pyautogui与cronjobs兼容吗?

对此有任何见识和建议,我们深表感谢。谢谢!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。