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


Считаете, что Ubuntu недостаточно дружелюбна к новичкам?
Помогите создать новое Руководство для новичков!

Автор Тема: запуск скрипта python через cron  (Прочитано 3940 раз)

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

Оффлайн wiom

  • Автор темы
  • Любитель
  • *
  • Сообщений: 82
    • Просмотр профиля
    • wiom.ru
запуск скрипта python через cron
« : 07 Июля 2015, 08:59:49 »
Всем привет. Пытаюсь запустить скрипт через cron. Скрипт то запускается но не работает нормально. Хотя с командной строки если запустить то все ок. Приведу кусок кода который не выполняется.
def rw_file(data = []):
    fileName = 'HOME_PATH/workspace/htmlParser/data.txt'
    if len(data) > 0:
        f = open(fileName, 'a')
        for index in data:
            f.write(index + '\n')
    else:
        f = open(fileName, 'r')
        data = [line.strip() for line in f]
    f.close()
    return data

def get_all_keys(html_doc):
    oldKeys = rw_file()
    #.//blockquote/p/span[@class="texthide"]/text()
    tree = etree.HTML(html_doc)
    keysList = tree.xpath('.//blockquote/p/span[@class="texthide"]/text()')
    newKeys = []

    buf = ' '.join(keysList)
    import re
    buf = re.sub(r'\s+', ',', buf)
    keysList = buf.split(',')
    print keysList
    for key in keysList:
        if not key in oldKeys:
            newKeys.append(key)

    if len(newKeys) > 0:
        rw_file(newKeys)
        showMessage('На сайте появилось что то новое')
        return True
    else:
        showMessage('Ничего нового не найдено')
        return False

def login_url(
                    url,
                    login,
                    passwd,
                    form_nomber,
                    login_name,
                    paswd_name,
                    submit_nomber
                ):
...................
    curPage = 84
    while curPage < maxPage:
        res = br.open('url' % (maxPage))
        curPage = maxPage
        maxPage = int(max_page(content))
        content = res.read()
    #парсинг ключей
    if get_all_keys(content):
        import webbrowser
        webbrowser.open_new_tab('url' % (maxPage)) # Вернет True и откроет вкладку

а в кроне пишу
DISPLAY=0.0 USER_NAME HOME_PATH/workspace/htmlParser/main.pyвот сейчас даже notifycation не отображаются. до этого как то по другому прописывал и все было норм. Но данные в data.txt не появлялись. Потом тоже что то написал в кроне и появились данные в data.txt но новая вкладка в браузере не открылась. Не знаю что сделать чтобы скрипт нормально запустился и отработал, подскажите пожалуйста
программисты - это люди, которые решают никому неизвестные проблемы, никому непонятными способами.

Оффлайн victor00000

  • Старожил
  • *
  • Сообщений: 15568
  • Глухонемой (Deaf)
    • Просмотр профиля
Wars ~.o

Оффлайн wiom

  • Автор темы
  • Любитель
  • *
  • Сообщений: 82
    • Просмотр профиля
    • wiom.ru
Re: запуск скрипта python через cron
« Ответ #2 : 07 Июля 2015, 09:45:48 »
ну вообще notify-send по cron можно сделать проще.
0 */1 * * * DISPLAY=:0.0 notify-send "ку-ку" "Прошел 1 час"
 

только у меня проблема не в том что скрипт не запускается. а в том что он не отрабатывает до конца. ваше решение подразумевает написание скрипта?) тогда будет проще зациклить програму)
программисты - это люди, которые решают никому неизвестные проблемы, никому непонятными способами.

Оффлайн victor00000

  • Старожил
  • *
  • Сообщений: 15568
  • Глухонемой (Deaf)
    • Просмотр профиля
Wars ~.o

Оффлайн wiom

  • Автор темы
  • Любитель
  • *
  • Сообщений: 82
    • Просмотр профиля
    • wiom.ru
Re: запуск скрипта python через cron
« Ответ #4 : 07 Июля 2015, 10:05:42 »
Да выполняется у меня notify-send. только из пайтоновского скрипта.
да и в cron я прописываю
DISPLAY=0.0 USER_NAME HOME_PATH/workspace/htmlParser/main.pyда и дело то совсем не в нем) дело в том что не открывается новая вкладка по условию и не идет запись в data.txt. Хотя последние эксперементы с cron
привели к тому что запись в data.txt прошла, но вот notify-send из скрипта не отработал и все равно вкладка не открылась...

Вот проще.
test(cron).py
#!/usr/bin/env python
# -*- coding: utf-8 -*-

import webbrowser
from subprocess import Popen, PIPE

def showMessage(msg, title = 'system'):
    Popen(
            'notify-send "'+ title +'" "'+ msg +'"',
            shell = True, stdin = PIPE, stdout = PIPE
        )
showMessage('test', 'cron')
webbrowser.open_new_tab('https://forum.ubuntu.ru/index.php?topic=263203')

в cron
* * * * * DISPLAY=0.0 /home/qwerty/workspace/test(cron).py
и вот уже прошло 3 минуты и ничего. вообще ничего. ни уведомлений. ни новой вкладке в браузере

Пользователь решил продолжить мысль [time]07 Июль 2015, 11:13:27[/time]:
интересно еще то, что при определенных обстоятельствах, т.е. когда в cron что то я прописывал, к сожалению уже не помню что, то notify-send работает из пайтоновского скрипта. но это все не важно главное чтобы вкладка в браузере открывалась

Пользователь решил продолжить мысль 08 Июля 2015, 00:07:03:
в общем так и не разобрался с cron, зациклил программу. всем спасибо. тему можно закрыть
« Последнее редактирование: 08 Июля 2015, 00:07:03 от wiom »
программисты - это люди, которые решают никому неизвестные проблемы, никому непонятными способами.

 

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