Странный Python Cron Job Issue - PullRequest
       13

Странный Python Cron Job Issue

0 голосов
/ 11 сентября 2018

Я использую Python 3.7 на Ubuntu Server 16.04, и у меня есть действительно простой скрипт Python, который отлично работает из командной строки, и он работает нормально с помощью простого сценария оболочки, и когда я настраиваю задание cron с помощью crontab -e или webmin, задания 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

Ответы [ 2 ]

0 голосов
/ 11 сентября 2018

Решение, после того, как мне посоветовали добавить дополнительную информацию crontab для получения полезных данных из файла журнала, заключалось в том, чтобы использовать полный путь к нужному исполняемому файлу python вместо того, чтобы позволить cron использовать тот питон, который ему нравится больше всего, чтоЯ предполагаю, что по умолчанию 2.7 на сервере Ubuntu.Поэтому, если вы хотите заставить cron использовать Python 3.7, используйте полный путь:

#!/bin/sh
/usr/local/bin/python3.7 /home/scripts/py/getprice.py
0 голосов
/ 11 сентября 2018

То же самое случилось со мной и на моем производственном сервере!Пожалуйста, попробуйте следующее в crontab.

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