Как запускать функцию в python каждый час
Перейти к содержимому

Как запускать функцию в python каждый час

  • автор:

Как сделать запуск функции каждый день с 8 утра до 8 вечера?

Всем привет. Мне нужно запускать функцию каждый день допустим с 8-ми утра, до 20-ти часов вечера с интервалом в час. Я сейчас использую библиотеку apscheduler, но никак не пойму как реализовать то, что мне нужно.

Отслеживать
49.3k 17 17 золотых знаков 57 57 серебряных знаков 101 101 бронзовый знак
задан 11 авг 2022 в 10:23
62 3 3 бронзовых знака
вам принципален именно apscheduler?
11 авг 2022 в 10:43

Нет, не принципален, я просто указал, что на данный момент использую данную библиотеку, так как в ней есть start_date и end_date, я подумал, может есть что-то типо start_time.

11 авг 2022 в 10:50
Если есть код, который пробовали использовать, добавьте его в вопрос.
11 авг 2022 в 12:23

2 ответа 2

Сортировка: Сброс на вариант по умолчанию

import schedule import time def job(): print("I'm working. ") schedule.every().day.at("08:00").do(job) 

Отслеживать
49.3k 17 17 золотых знаков 57 57 серебряных знаков 101 101 бронзовый знак
ответ дан 11 авг 2022 в 10:30
Sirius_MkLain Sirius_MkLain
168 12 12 бронзовых знаков
Этот код будет запускать функцию раз в сутки в 08:00, а не каждый час с 8:00 до 20:00.
11 авг 2022 в 10:40
@Сергей, ну, формально это все-таки ответ, хоть и неправильный.
11 авг 2022 в 10:58
так ссылку же прикрепил к ответу.
11 авг 2022 в 11:00

@insolor, вам, конечно, виднее, но по мне так это типичная причина закрытия при проверке сообщений низкого качества категории «это ответ -ссылка». Факт, что из этой ссылки сделали копипасту сюда, ничего не добавляет.

11 авг 2022 в 11:01

@Сергей, «Хотя по ссылке можно найти ответ на вопрос, лучше указать здесь самое главное, а ссылку приводить в качестве источника. Если страница, на которую ведет ссылка, будет изменена, ответ-ссылка может стать недействительным.» — основное добавлено, ссылка на источник есть. Это как раз тот случай, когда это ответ, хотя и неправильный ответ. В таких случаях при тревоге «не ответ» модераторы ее отклоняют с причиной «отклонённые — не следует использовать сигнал тревоги, чтобы указать на неточность или неверность ответа»

Выполнение функции в определенное время

Как я могу выполнять функцию каждый день в определенное время (к примеру в 9:00, 13:15, 19:35)? Это нужно для моего бота во ВКонтакте. Условно, мне нужно выводить:

print("Hello world!") 

Отслеживать
задан 17 авг 2021 в 23:16
ppulseneon ppulseneon
161 1 1 серебряный знак 13 13 бронзовых знаков

1 ответ 1

Сортировка: Сброс на вариант по умолчанию

Есть два варианта решения такой проблемы:

  1. Ваша программа — обычное приложение, внутри которого выполняется вызов нужной функции. Тогда просто используйте cron.
  2. Ваша программа круглосуточно висит в памяти (демон) и должна сама вызывать эту функцию. В этом случае проще всего использовать sched.scheduler. Можно посмотреть здесь: https://coderoad.ru/11523918/Python-%D0%B7%D0%B0%D0%BF%D1%83%D1%81%D0%BA-%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%B8-%D0%B2-%D0%B7%D0%B0%D0%B4%D0%B0%D0%BD%D0%BD%D0%BE%D0%B5-%D0%B2%D1%80%D0%B5%D0%BC%D1%8F

Отслеживать
ответ дан 18 авг 2021 в 2:11
13.5k 1 1 золотой знак 14 14 серебряных знаков 31 31 бронзовый знак

  • python
  • datetime
  • таймер
    Важное на Мете
Похожие

Подписаться на ленту

Лента вопроса

Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.

Дизайн сайта / логотип © 2024 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2024.4.30.8420

Как запускать скрипты python по времени: простые способы для автоматизации

В приведенном примере мы создаем новую задачу, указывая команду запуска скрипта Python /path/to/script.py. Затем мы устанавливаем расписание, чтобы задача выполнялась каждый день в полночь. Наконец, мы запускаем cron-менеджер, чтобы он отслеживал задачи и выполнял их в указанное время.

Детальный ответ

Как запускать скрипты Python по времени

Python — один из самых популярных языков программирования в мире. Он широко используется для разработки веб-приложений, анализа данных, и автоматизации задач. Одной из задач, которые можно автоматизировать в Python, является запуск скриптов по времени. В этой статье мы рассмотрим различные способы запуска скриптов Python по времени.

Использование модуля time и функции sleep

Первый способ, который рассмотрим — это использование модуля time и функции sleep. Модуль time предоставляет различные функции для работы со временем, а функция sleep позволяет приостановить выполнение программы на определенный промежуток времени.

 import time def run_script(): # Ваш скрипт здесь pass # Запустить скрипт каждые 10 секунд while True: run_script() time.sleep(10) 

В этом примере мы создали функцию run_script, которая содержит ваш код Python. Затем мы используем цикл while True для бесконечного выполнения скрипта. Внутри цикла мы вызываем функцию run_script и затем вызываем функцию sleep из модуля time, чтобы приостановить выполнение программы на 10 секунд.

Использование модуля schedule

Второй способ — использование модуля schedule. Модуль schedule позволяет запускать задачи по расписанию. Он предоставляет простой способ определения расписания выполнения задачи.

 import schedule import time def run_script(): # Ваш скрипт здесь pass # Запустить скрипт каждую минуту schedule.every(1).minutes.do(run_script) while True: schedule.run_pending() time.sleep(1) 

В этом примере мы создали функцию run_script, которая содержит ваш код Python. Затем мы используем функцию every из модуля schedule, чтобы определить интервал выполнения задачи (в данном случае каждую минуту). Затем мы используем метод do, чтобы указать, какую функцию нужно выполнить в заданное время. Внутри цикла мы вызываем метод run_pending, чтобы выполнить назначенные задачи, и затем вызываем функцию sleep, чтобы приостановить выполнение программы на 1 секунду.

Использование сторонних инструментов

Третий способ — использование сторонних инструментов, которые предоставляют функциональность запуска скриптов по времени. Некоторые из таких инструментов включают в себя cron для операционных систем семейства Unix и Task Scheduler для операционных систем Windows. Например, для использования cron вам нужно создать задачу cron, указав путь к вашему скрипту Python и время запуска. Кроме того, вы можете настроить дополнительные параметры, такие как интервалы и условия запуска.

 # Пример настройки cron для запуска скрипта каждый день в 10:00 утра 0 10 * * * python /path/to/your/script.py 

В зависимости от вашей операционной системы и требований, вы можете выбрать подходящий инструмент для запуска скриптов Python по времени.

Вывод

В этой статье мы рассмотрели различные способы запуска скриптов Python по времени. Мы использовали модуль time и функцию sleep, модуль schedule, а также сторонние инструменты, такие как cron и Task Scheduler. Вы можете выбрать подходящий способ в зависимости от ваших потребностей и предпочтений. Надеюсь, эта статья была полезной и поможет вам автоматизировать выполнение ваших скриптов Python.

Как сделать запуск функции каждый день в 08:00?

Если добавить команду, то функция через у команду работает. Как сделать чтобы эта функция запускалась, скажем, каждый день в 08:00?

def data_r_new(message): core.log(message.chat, message.text) conn = sqlite3.connect(settings.DATABASE) cursor = conn.cursor() sql = "SELECT * FROM dovidnyk WHERE strftime('%d-%m', data_r) = strftime('%d-%m', 'now')" cursor.execute(sql,) result = cursor.fetchall() for fn in result: sql = "SELECT user_id FROM user WHERE status = True" cursor.execute(sql,) result = cursor.fetchall() for i in result: dr = datetime.strptime(fn[6], '%Y-%m-%d %H:%M:%S').strftime('%d.%m.%Y') msg = "�� ПІБ: <> <> <>\n" \ "�� Дата народження: <>\n".format(fn[3], fn[4], fn[5], dr) sent = bot.send_message(i[0], msg, reply_markup=keyboard, parse_mode='HTML') 

Отслеживать
12.5k 7 7 золотых знаков 19 19 серебряных знаков 48 48 бронзовых знаков
задан 17 янв 2021 в 21:09
Last_Arkhangel Last_Arkhangel
195 1 1 золотой знак 3 3 серебряных знака 12 12 бронзовых знаков

3 ответа 3

Сортировка: Сброс на вариант по умолчанию

Первый вариант: Работает нормально с polling, но с flask не работает.

from multiprocessing import * import schedule def start_process(): p1 = Process(target=P_schedule.start_schedule, args=()).start() def start_schedule(): schedule.every().day.at("08:00").do(data_r_new) while True: schedule.run_pending() time.sleep(1) def data_r_new(): . if __name__ == '__main__': start_process() bot.polling(none_stop=True) 

Второй вариант: Работает нормально с flask.

from flask_apscheduler import APScheduler def data_r_new(): . scheduler = APScheduler() if __name__ == '__main__': if not app.debug or os.environ.get('WERKZEUG_RUN_MAIN') == 'true': scheduler.add_job(id ='data_r_mess_new', func = data_r_mess_new, trigger = 'cron', hour = 8, minute = 0, second = 0) scheduler.start() 

ПС. Строка if not app.debug or os. нужна для того чтобы не приходило сообщение два раза, когда во flask включен debug=True . Если debug не включен, эту строчку можно убрать.

Отслеживать
ответ дан 7 фев 2021 в 0:59
Last_Arkhangel Last_Arkhangel
195 1 1 золотой знак 3 3 серебряных знака 12 12 бронзовых знаков

Вы можете запускать свои скрипты в определенное время через python-rq. Эта библиотека довольно просто подключается:

from redis import Redis from rq import Queue q = Queue(connection=Redis()) 
q.enqueue_at(datetime(2021, 01, 20, 8, 0), data_r_new, message) 

А с помощью функции enqueue_in можно задать интервал, через который функция будет выполняться

Библиотека имеет хорошую документацию, и не требует глубокого изучения. Является в какой-то степени альтернативой для известной celery.

Запускается так же отдельным процессом (для запуска с планировщиком необходимо задать дополнительный ключ):

rq worker --with-scheduler 

P.S: В качестве альтернативы так же можете посмотреть в сторону dramatiq (поддерживает приоритеты задач и их запуск через заданный промежуток времени)

Отслеживать
ответ дан 17 янв 2021 в 23:03
1,978 1 1 золотой знак 16 16 серебряных знаков 26 26 бронзовых знаков

Как возможная альтернатива.

Первое. Вероятно, надо установить специальный модуль schedule. Он не входит в перечень стандартных модулей «из коробки».

$ pip install schedule 

Второе. Добавить в программу следующее:

import schedule import time def job(): print("I'm working. ") schedule.every().day.at("08:00").do(job) while True: schedule.run_pending() time.sleep(1) 

Здесь — job — это ваша функцию, которую вы хотите выполнять в 8:00.

Есть еще модуль shed из стандартной библиотеки, но там время идет в секундах от начала эпохи и придется повозиться, с тем чтобы добавлять задачу на 8:00. Однако это может оказаться полезным упражнением и ничего дополнительно не надо устанавливать.

=== Альтернатива альтернативе ===
Используем модуль строенный модуль тайм time и смекалку :-).

import time time.localtime() Out[42]: time.struct_time(tm_year=2021, tm_mon=1, tm_mday=18, tm_hour=13, tm_min=7, tm_sec=22, tm_wday=0, tm_yday=18, tm_isdst=0) time.localtime().tm_hour Out[43]: 13 

Как видите, несложно узнать текущее время, используя

.tm_hour .tm_min .tm_sec 
import time . while True: time.sleep(1) z = time.localtime() if z.tm_hour == 8 and z.tm_min == 0 and tm_sec == 0: print("Бимба") 

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *