python - 奇怪的 Python Cron 作业问题
问题描述
我在 Ubuntu Server 16.04 上运行 Python 3.7,我有一个非常基本的 Python 脚本,可以从命令行正常运行,它通过简单的 shell 脚本运行良好,当我通过 crontab -e 或 webmin 设置 cron 作业时, cron 作业将在日志中显示为已发生。但是,该脚本实际上并没有运行,因为我将它设置为记录自身,并且它什么也不记录。谁能告诉我我在这里缺少什么?
我的外壳脚本(getprice.sh):
#!/bin/sh
python3.7 /home/websites/www.coin-stack.com/py/getprice.py
我的python代码(getprice.py):
#!/usr/bin python3.7
import requests
import json
import logging
# ******************************* Settings *****************************************************************************
# Logging Setup
debug_level = 'INFO'
logging.basicConfig(level=logging.INFO, filename='run.log', format=' %(asctime)s - %(levelname)s - %(message)s')
logger = logging.getLogger(__name__)
crawl_queue = []
delay = 60
url = 'http://www.somedomainoranother.com/?p=somepage'
# **********************************************************************************************************************
def main():
data = get_prices(url)
data = json.loads(data)
# Bitcoin
btc = data['BTC']
btc = btc['USD']
return btc
def get_prices(url):
resp = requests.get(url=url)
data = resp.content
return data
main()
我的 cron 工作:
*/10 * * * * /home/websites/www.mydomain.com/py/getprice.sh
解决方案
在我被建议添加额外的 crontab 信息以从日志文件中获取有用数据之后,解决方案是利用所需的确切 python 可执行文件的完整路径,而不是让 cron 使用它最喜欢的任何 python,我猜这是是 Ubuntu 服务器上的默认 2.7。因此,如果您想强制 cron 使用 Python 3.7,请使用完整路径:
#!/bin/sh
/usr/local/bin/python3.7 /home/scripts/py/getprice.py
推荐阅读
- c++ - 返回布尔标志的 Lambda 表达式不停止条件变量 wait() 函数
- android-studio - gradle 文件未正确生成
- python - MAILJET 不返回 CustomId
- time - 算法的时间复杂度 (Big O, Omega)
- terraform - 使用 terraform 向 VM 添加额外存储
- python - 清理文件备份的 Ansible 任务
- php - .htaccess 用于公共文件夹作为根目录和子文件夹用于子目录
- json - 如何从 json 文件中解码 JSONL 并存储在 golang 的 struct 中
- c# - 如何将 RTF 格式转换为字符串 C#
- socket.io - Socket.io:如何获取任何客户端在服务器端监听的所有事件名称?