Форум русскоязычного сообщества Ubuntu


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: Cron и Python (не работает вместе)  (Прочитано 1185 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн tres_passer

  • Автор темы
  • Новичок
  • *
  • Сообщений: 1
    • Просмотр профиля
Cron и Python (не работает вместе)
« : 22 Июля 2016, 11:33:29 »
Всем привет!
помогите новичку понять куда копать:
1. Имею скрипт на питоне, который в консоли из окружения отрабатывает на ура
запуск скрипта в консоли:
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:PWD@HOST/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
получаю в консоли следующее сообщение:

Код: (html5) [Выделить]
root@bill2:~# 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=<20160722082656.C16891600F3@bill2>
Jul 22 04:26:56 bill2 postfix/qmgr[1116]: C16891600F3: from=<root@bill2>, size=1221, nrcpt=1 (queue active)
Jul 22 04:26:56 bill2 postfix/local[1265]: C16891600F3: to=<root@bill2>, 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
root@bill2:~#

насколько я понимаю скрипт уходит куда то в себя на строке
pdfkit.from_string(doc.dokstring, doc.outpdf)
Но почему из консоли то отрабатывает как нужно?

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

Помогите пожалуйста практическими советами.
Спасибо


ТС не появлялся на Форуме более полугода по состоянию на 14/07/2019 (последняя явка: 22/07/2016). Модератором раздела принято решение закрыть тему.
--zg_nico
« Последнее редактирование: 14 Июля 2019, 01:26:36 от zg_nico »

Оффлайн Azure

  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 6017
  • Windows10, i3wm on Debian9, Manjaro20.0
    • Просмотр профиля
Re: Cron и Python (не работает вместе)
« Ответ #1 : 22 Июля 2016, 15:10:09 »
Но почему из консоли то отрабатывает как нужно?
Потому что в консоли Вы делаете cd /root/billИли настраивайте правильно virtualenv для такого странного размещения /root/bill/bin/python или в начале срипта пропишите переход в заданный каталог.
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

 

Страница сгенерирована за 0.019 секунд. Запросов: 20.