Как мы можем остановить программу в определенное время в день в 15:30 ежедневно? - PullRequest
0 голосов
/ 08 февраля 2019

Кто-нибудь поможет мне получить код для следующих условий ...

Я хотел бы запускать задания 1 и 2 каждые 2 и 3 секунды, задания 1 и 2 должны начинаться в 9:30 утра в день.и должен остановиться @ 17:30 ...!job3 @ 17: 31 вечера ежедневно только один раз ..

import schedule
import time

def job1():
   print("I'm working...")
def job2():
   print("I'm not working...")
def job3():
   print("I'll not work...")

schedule.every(2).seconds.do(job1) #For Every 2 seconds
schedule.every(5).seconds.do(job2) #For Every 3 Seconds


schedule.every().day.at("17:28").do(job3) #Once in a day

while True:
   schedule.run_pending()
   time.sleep(1)

Ответы [ 2 ]

0 голосов
/ 08 февраля 2019

Наверное, не самый хороший способ сделать это, но что-то вроде этого должно работать.(Очевидно, вы можете расширить оператор if, включив в него только рабочие дни / исключая праздничные дни и т. Д.)

import datetime
import time


def job_a():
    print('a')

def job_b():
    print('b')

def job_3():
    print('3')



start_a = datetime.datetime.now()
wait_time_a = 2

start_b = datetime.datetime.now()
wait_time_b = 5

start_time = 9.30
end_time = 17.31

do_job_3 = False

while True:
    while datetime.datetime.now().hour + datetime.datetime.now().minute/100. > start_time \
        and datetime.datetime.now().hour + datetime.datetime.now().minute/100. < end_time:
            do_job_3 = True
            if (datetime.datetime.now() - start_a).seconds > wait_time_a:
                job_a()
                start_a += datetime.timedelta(seconds=wait_time_a)
            if (datetime.datetime.now() - start_b).seconds > wait_time_b:
                job_b()
                start_b += datetime.timedelta(seconds=wait_time_b)
            time.sleep(1)

    if do_job_3:
        do_job_3 = False
        job_3()

    time.sleep(1)
0 голосов
/ 08 февраля 2019

Вы можете обернуть это в функцию и запустить ее в определенное время с помощью планировщика

schedule.every(2).seconds.do(job1) #For Every 2 seconds
schedule.every(5).seconds.do(job2) #For Every 3 Seconds

И вы можете сделать то же самое, отменив задание, когда захотите.Таким образом, у вас будет 2 дополнительных задания, которые запускают и останавливают другие задания.

...