奇怪的Python Cron作业问题

时间:2018-09-11 18:32:30

标签: python shell ubuntu cron

我在Ubuntu Server 16.04上运行Python 3.7,并且我有一个非常基本的Python脚本,该脚本可以从命令行正常运行,并且可以通过简单的shell脚本正常运行,并且可以通过crontab -e设置cron作业时运行或webmin,cron作业将在发生时显示在日志中。但是,该脚本实际上并未运行,因为我将其设置为自行记录,并且不记录任何内容。谁能告诉我我在这里想念的东西吗?

我的shell脚本(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

2 个答案:

答案 0 :(得分:1)

我的生产服务器上也发生了同样的事情! 请在crontab中尝试以下操作。

*/10 * * * * /home/websites/www.mydomain.com/py/getprice.sh > /path/cronjob.log 2>&1

答案 1 :(得分:1)

在我被建议添加额外的crontab信息以从日志文件中获取有用的数据之后,解决方案是利用完整路径到所需的确切python可执行文件,而不是让cron使用最喜欢的任何python。我猜想是Ubuntu服务器上的默认2.7。因此,如果要强制cron使用Python 3.7,请使用完整路径:

#!/bin/sh
/usr/local/bin/python3.7 /home/scripts/py/getprice.py