22
Июл
2016

CRON и скрипт не работают вместе

Имею скрипт на питоне, который в консоли из окружения отрабатывает на ура запуск скрипта в консоли:

cd /root/bill
source bin/activate
puthon filegen.py

Сам скрипт имеет логику: бежим по таблице в монго, получаем HTML, генерим из него PDF и грохаем запись, как выполненную:

#!/root/bill/bin/python
# coding: utf-8

from __future__ import unicode_literals
from mongoengine import *
import datetime
import time
import calendar

from io import BytesIO as IO
import gzip

import pdfkit
import pytils

from bson import json_util
from bson.json_util import dumps
from bson.objectid import ObjectId

import sys
import random
reload(sys)  # Reload does the trick!
sys.setdefaultencoding('UTF8')

connect(host='mongodb://main:[email protected]/bill?ssl=true&ssl_cert_reqs=CERT_NONE') 
    
class Genq(Document):
    dokstring = StringField()
    outpdf = StringField()

print ("started")

foreva = True

while foreva:
    print ("....")
    reqs = Genq.objects()
    for doc in reqs:    
        print ("++++++")
        pdfkit.from_string(doc.dokstring, doc.outpdf)
        print (">>>>>>")
        doc.delete()
        print ("!!!!!!!")

Пытаюсь запустить этот вечный скрипт в кроне командой:

@reboot /root/bill/bin/python /root/bill/filegen.py >>/var/log/syslof

Получаю в консоли следующее сообщение:

[email protected]:~# tail 50 /var/log/syslog
tail: cannot open ‘50’ for reading: No such file or directory
==> /var/log/syslog <==
started
....
++++++
Jul 22 04:26:56 bill2 postfix/pickup[1115]: C16891600F3: uid=0 from=<root>
Jul 22 04:26:56 bill2 postfix/cleanup[1263]: C16891600F3: message-id=<[email protected]>
Jul 22 04:26:56 bill2 postfix/qmgr[1116]: C16891600F3: from=<[email protected]>, size=1221, nrcpt=1 (queue active)
Jul 22 04:26:56 bill2 postfix/local[1265]: C16891600F3: to=<[email protected]>, orig_to=<root>, relay=local, delay=0.02, delays=0.01/0.01/0/0, dsn=2.0.0, status=sent (delivered to mailbox)
Jul 22 04:26:56 bill2 postfix/qmgr[1116]: C16891600F3: removed
Jul 22 04:27:00 bill2 ntpdate[603]: step time server 91.189.89.198 offset -0.344170 sec
Jul 22 04:27:16 bill2 ntpdate[1281]: adjust time server 91.189.89.198 offset -0.000024 sec
[email protected]:~#

Насколько я понимаю скрипт уходит куда-то в себя на строке:

pdfkit.from_string(doc.dokstring, doc.outpdf)

Но почему из консоли то отрабатывает как нужно?

Все что я понял, так это то, что дело в том, что у крона какое то свое окружение, из которого то ли не видна файловая система, то ли не видна библиотека pdfkit, хотя я все запускаю от рута.

Источник: https://ru.stackoverflow.com/questions/547336/cron-%D0%B8-%D1%81%D0%BA%D1%80%D0%B8%D0%BF%D1%82-%D0%BD%D0%B5-%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%B0%D1%8E%D1%82-%D0%B2%D0%BC%D0%B5%D1%81%D1%82%D0%B5

Тебе может это понравится...

Добавить комментарий