вопрос о расписании питона - PullRequest
0 голосов
/ 30 декабря 2010

Я читал о Python Sched (задача Schedular), он работает как cron.
, но у меня есть вопрос:

  • позвольте мне сказать, если я запланирую функцию для rynчерез каждые 2 часа и в то же время моя система выключается, затем я снова перезагружаю систему ... автоматически ли запускается расписание и будет ли запущена функция через 2 часа?или я должен начать это снова после выключения системы?

  • работал ли sched как демон?

Ответы [ 2 ]

1 голос
/ 30 декабря 2010

Ответ на все три вопроса: Нет .

sched отличается от cron.Он использует общую функцию таймера или счетчика и функцию задержки и позволяет планировать вызов функции через определенное время (событие, определенное общей функцией таймера).

Он не будет работать после закрытияваша программа, если вы не поддерживаете состояние путем записи в файл или базу данных.Это сложно, и лучше использовать cron.

sched работает с событиями, но не с фоном.таким образом, это не совсем демон, но вы можете деамонизировать его, запустив программу в фоновом режиме, используя возможности ОС.

0 голосов
/ 30 декабря 2010

и если это так:
будет ли это работать даже после перезагрузки системы?
ответ: НЕТ, тогда как планировщик турбонагнетателя может работать с использованием cronos в cron?запланированные события в турбонагнетателе также исчезнут после перезапуска SYSTEM.
ПОЖАЛУЙСТА, ПРАВИЛИ МЕНЯ, ЕСЛИ Я НЕПРАВИЛЬНО.

import time
import sched
import datetime
import threading
import calendar
#from datetime import datetime


class test:

    def __init__(self):
        self.name = ''

    def getSec(self):

        now = datetime.datetime.now()
        print "now - ", now
        currentYear = now.year
        currentMonth = now.month
        currentDay = now.day
        currentHour = now.hour
        currentMinute = now.minute
        currentSecond = now.second
        currentMicroseconds = now.microsecond
        command = "python runbackup.py"
        print "command is - ", command

        print "currentMinute - ", currentMinute
        print "currentSecond - ", currentSecond
        # current time
        a = datetime.datetime(currentYear, currentMonth, currentDay, currentHour, currentMinute, currentSecond, currentMicroseconds)

        last_date_of_current_month = calendar.monthrange(currentYear, currentMonth)[1]
        print "last_date_of_current_month - ", last_date_of_current_month
        b = datetime.datetime(currentYear, currentMonth, int(last_date_of_current_month), 23, 59, 59, 000000)
        #b = datetime.datetime(currentYear, currentMonth, int(29), 18, 29, 00, 000000)
        #print "date time of b is - %s %s " % (18, 29)

        c = b-a
        print "c is - ", c

        time.sleep(1)
        scheduler = sched.scheduler(time.time, time.sleep)
        #scheduler.cancel(e1)
        sec = c.seconds
        print "second -  ", sec
        print "scheduler entered."
        e1 = scheduler.enter(sec, 1, self.getSec, ())
        t = threading.Thread(target=scheduler.run)
        print "thread started."
        print "======================================"
        t.start()

        #scheduler.cancel(e1)
        #print "canceled."

        return True

if __name__=='__main__'  :
    obj = test()
    obj.getSec()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...