Сценарий Python, чтобы делать что-то в одно и то же время каждый день

У меня есть длинный сценарий python, который я хочу делать в 01:00 каждое утро.

Я смотрел на модуль расписания и на объект Timer, но я не могу понять, как их использовать для достижения этого.

4 Solutions collect form web for “Сценарий Python, чтобы делать что-то в одно и то же время каждый день”

Вы можете сделать это следующим образом:

 from datetime import datetime from threading import Timer x=datetime.today() y=x.replace(day=x.day+1, hour=1, minute=0, second=0, microsecond=0) delta_t=yx secs=delta_t.seconds+1 def hello_world(): print "hello world" #... t = Timer(secs, hello_world) t.start() 

Это выполнит функцию (например, hello_world) на следующий день в 1:00.

Я потратил немало времени, также глядя на запуск простой программы Python в 01:00. По какой-то причине я не мог заставить cron запустить его, и APScheduler казался довольно сложным для чего-то, что должно быть простым. Расписание ( https://pypi.python.org/pypi/schedule ) казалось правильным.

Вам нужно будет установить их библиотеку Python:

 pip install schedule 

Это изменено из их примерной программы:

 import schedule import time def job(t): print "I'm working...", t return schedule.every().day.at("01:00").do(job,'It is 01:00') while True: schedule.run_pending() time.sleep(60) # wait one minute 

Вам нужно будет поставить свою собственную функцию вместо работы и запустить ее без nohup, например:

 nohup python2.7 MyScheduledProgram.py & 

Не забудьте запустить его снова, если вы перезагрузитесь.

APScheduler может быть тем, чем вы занимаетесь.

 from datetime import date from apscheduler.scheduler import Scheduler # Start the scheduler sched = Scheduler() sched.start() # Define the function that is to be executed def my_job(text): print text # The job will be executed on November 6th, 2009 exec_date = date(2009, 11, 6) # Store the job in a variable in case we want to cancel it job = sched.add_date_job(my_job, exec_date, ['text']) # The job will be executed on November 6th, 2009 at 16:30:05 job = sched.add_date_job(my_job, datetime(2009, 11, 6, 16, 30, 5), ['text']) 

https://apscheduler.readthedocs.io/en/latest/

Вы можете просто заставить его запланировать другой запуск, построив его в функцию, которую вы планируете.

Мне нужно что-то подобное для задачи. Это код, который я написал: он вычисляет следующий день и меняет время на все, что требуется, и находит секунды между текущим временем и следующим запланированным временем.

 import datetime as dt def my_job(): print "hello world" nextDay = dt.datetime.now() + dt.timedelta(days=1) dateString = nextDay.strftime('%d-%m-%Y') + " 01-00-00" newDate = nextDay.strptime(dateString,'%d-%m-%Y %H-%M-%S') delay = (newDate - dt.datetime.now()).total_seconds() Timer(delay,my_job,()).start() 
  • Сопоставление списков значений для ключей dict и return key / value в новом dict
  • Почему рекурсия в python настолько медленная?
  • Как обновить Python?
  • Нужна помощь в разработке оценки пригодности для нейронной сети, основанной на алгоритме NEAT
  • повышение эффективности кода: стандартное отклонение на раздвижных окнах
  • Неверный список, возвращаемый в python
  • Получить время выполнения блока кода в Python 2.7
  • Функция для получения количества животных в питоне
  • Python - укажите комбинационную пару для значения функции
  • Почему нарезка списка python не выводит индекс из связанной ошибки?
  • Эффективный способ подсчета True и False
  • Python - лучший язык программирования в мире.