def jobs(self): trigger = CronTrigger(minute='*/15') job = (trigger, self.send_news_async) return (job,)
def autosave(sched): sched.add_job(commit,CronTrigger(second=0))
from apscheduler.schedulers.background import BackgroundScheduler from apscheduler.triggers.combining import OrTrigger from apscheduler.triggers.cron import CronTrigger from django_apscheduler.jobstores import DjangoJobStore from django_apscheduler.jobstores import register_events from django_apscheduler.jobstores import register_job from django.core.management import call_command scheduler = BackgroundScheduler() scheduler.add_jobstore(DjangoJobStore(), "default") every_3_hours_trigger = OrTrigger([ CronTrigger(hour=hour) for hour in range(0, 24, 3) ]) @register_job(scheduler, every_3_hours_trigger, replace_existing=True) def update_games(): print('Starting: update_games') call_command('update_games') print('Done: update_games') def start_scheduler(): if scheduler.state == 0: register_events(scheduler) scheduler.start() print('Started scheduler.')
def get_auth_key(): file = open('auth-key.txt', 'r') key = file.readline() return key def loop_task(threshold): toaster = ToastNotifier() auth_key = get_auth_key() json_result = get_realtime_data(auth_key) bike_cnt = parsing_data(json_result) if bike_cnt < threshold: toaster.show_toast("현재 따릉이 " + str(bike_cnt) + "개 남았습니다.", "바로 대여하세요.") bike_low_cnt = int(input("몇 대 이하인 경우 알람을 울릴까요?\n")) set_hour = input("어느 시간 대에 알람을 활성화 할까요? ex) 0-23\n") set_second = "*/" + str(input("몇 초 주기로 알려드릴까요?\n")) trigger = CronTrigger(hour=set_hour, second=set_second) scheduler.add_job(loop_task, trigger, args=[bike_low_cnt]) while True: pass """ https://lemontia.tistory.com/508 https://towardsdatascience.com/how-to-make-windows-10-toast-notifications-with-python-fb3c27ae45b9 """
from apscheduler.schedulers.background import BackgroundScheduler from apscheduler.triggers.cron import CronTrigger import time from scrapy.crawler import CrawlerProcess from scrapy.utils.project import get_project_settings from Jobspider.spiders.job_test import Jobpythonspider def crawl(crawler, spider): crawler.crawl(spider) crawler.start() if __name__ == '__main__': settings = get_project_settings() crawler = CrawlerProcess(settings) spider = Jobpythonspider() scheduler = BackgroundScheduler() scheduler.daemonic = False cron = CronTrigger(second='*/30') scheduler.add_job(crawl, cron, args=[crawler, spider]) scheduler.start() while True: time.sleep(1000)
def addScheduleByDateHourMinute(desc, timezone, user): scheduler.add_job(send_reminder, CronTrigger(start_date=timezone, end_date=timezone), args=(desc, user))
if os.path.exists(h_l_pot_info_url): try: with open(h_l_pot_info_url, 'rb') as f: h_l_pot_info = pickle.load(f) if len(h_l_pot_info) != len(stk_list): updatePotInfo() except: updatePotInfo() else: updatePotInfo() sched = BlockingScheduler() trigger = OrTrigger([ CronTrigger(hour='9', minute='31-59/5'), CronTrigger(hour='10', minute='*/5'), CronTrigger(hour='11', minute='1-29/5'), CronTrigger(hour='13-15', minute='*/5') ]) sched.add_job(judgeAndSendMsg, trigger, day_of_week='mon-fri', minute='*/5', max_instances=10) sched.add_job(func=updatePotInfo, trigger='cron', day_of_week='mon-fri', hour=5, minute=30, misfire_grace_time=3600, coalesce=True) # sched.add_job(updatePotInfo, # 'cron', # max_instances=10,
import logging from apscheduler.schedulers.blocking import BlockingScheduler from apscheduler.triggers.cron import CronTrigger from wfh.display.constants import INTERVAL, START_TIME, END_TIME from wfh.display.inky_utils import update_inky logging.basicConfig(format='%(asctime)s:%(levelname)s:%(message)s', level=logging.DEBUG) scheduler = BlockingScheduler() if __name__ == "__main__": scheduler.add_job(update_inky) scheduler.add_job( update_inky, CronTrigger(minute=f'0/{INTERVAL}', hour=f'{START_TIME}-{END_TIME}', day='*', month='*', day_of_week='0-4')) scheduler.start()
import random from apscheduler.triggers.cron import CronTrigger # ========================= 这一部分需要修改 ========================= ID = '0123465789' RULES = { '体温': lambda: str(random.choice([t/10 for t in range(360, 371)])), '是否有发烧': '是或者否', '所在位置': '填所在位置即可。引号内的所有内容都会作为答案提交', } # ====================================================================== RETRY_TIMES = 5 RETRY_INTERVAL = 10 TRIGGER = CronTrigger(hour='5,18', minute=5) ERROR_CALLBACK = lambda _: None # noqa
from apscheduler.schedulers.blocking import BlockingScheduler from apscheduler.triggers.combining import OrTrigger from apscheduler.triggers.cron import CronTrigger import urllib.request sched = BlockingScheduler() # @sched.scheduled_job('cron', day_of_week='mon-fri', minute='*/1') def scheduled_job(): url = "https://linebothook.herokuapp.com/" conn = urllib.request.urlopen(url) for key, value in conn.getheaders(): print(key, value) trigger = OrTrigger([ CronTrigger(hour='10-20', minute='*/25') ]) sched.add_job(scheduled_job, trigger) sched.start()
from flask import Flask, url_for, request, redirect, render_template from apscheduler.schedulers.background import BackgroundScheduler from apscheduler.triggers.cron import CronTrigger sched = BackgroundScheduler() trigger = CronTrigger(hour='0', minute='5') app = Flask(__name__) app.config.from_object('config') # db = SQLAlchemy(app) from app import views sched.start()
# # while True: # schedule.run_pending() # time.sleep(1) # # for i in spotify: # data = [i['name'], "album", i['playcount']] # sheet.append(data) # # sheet.insert_cols(idx=4) # sheet["C59"] = "=SUM(C2:C58)" # workbook.save(filename="ATEEZChartData.xlsx") def daily(): sheet() sortedsheet() formattedsheet() wb.save(filename="ATEEZChartData.xlsx") myFile = open('append.txt', 'a') myFile.write('\nAccessed on ' + str(datetime.datetime.now())) if __name__ == "__main__": scheduler = BlockingScheduler() scheduler.add_job(daily, CronTrigger(minute="4", hour="23")) scheduler.start()
def run_monthly( self, callback: Callable[['CallbackContext'], None], when: datetime.time, day: int, context: object = None, name: str = None, day_is_strict: bool = True, job_kwargs: JSONDict = None, ) -> 'Job': """Creates a new ``Job`` that runs on a monthly basis and adds it to the queue. Args: callback (:obj:`callable`): The callback function that should be executed by the new job. Callback signature for context based API: ``def callback(CallbackContext)`` ``context.job`` is the :class:`telegram.ext.Job` instance. It can be used to access its ``job.context`` or change it to a repeating job. when (:obj:`datetime.time`): Time of day at which the job should run. If the timezone (``when.tzinfo``) is :obj:`None`, the default timezone of the bot will be used. day (:obj:`int`): Defines the day of the month whereby the job would run. It should be within the range of 1 and 31, inclusive. context (:obj:`object`, optional): Additional data needed for the callback function. Can be accessed through ``job.context`` in the callback. Defaults to :obj:`None`. name (:obj:`str`, optional): The name of the new job. Defaults to ``callback.__name__``. day_is_strict (:obj:`bool`, optional): If :obj:`False` and day > month.days, will pick the last day in the month. Defaults to :obj:`True`. job_kwargs (:obj:`dict`, optional): Arbitrary keyword arguments to pass to the ``scheduler.add_job()``. Returns: :class:`telegram.ext.Job`: The new ``Job`` instance that has been added to the job queue. """ if not job_kwargs: job_kwargs = {} name = name or callback.__name__ job = Job(callback, context, name, self) if day_is_strict: j = self.scheduler.add_job( callback, trigger='cron', args=self._build_args(job), name=name, day=day, hour=when.hour, minute=when.minute, second=when.second, timezone=when.tzinfo or self.scheduler.timezone, **job_kwargs, ) else: trigger = OrTrigger([ CronTrigger( day=day, hour=when.hour, minute=when.minute, second=when.second, timezone=when.tzinfo, **job_kwargs, ), CronTrigger( day='last', hour=when.hour, minute=when.minute, second=when.second, timezone=when.tzinfo or self.scheduler.timezone, **job_kwargs, ), ]) j = self.scheduler.add_job(callback, trigger=trigger, args=self._build_args(job), name=name, **job_kwargs) job.job = j return job
def start_scheduler(): trigger = CronTrigger(day_of_week='mon-sun', hour='9-18', minute='45') scheduler.add_job(job_brush_flow, trigger) # 根据需要进行设置 scheduler.start()
driver.find_element_by_xpath( '//*[@id="mainM"]/div/div/div/div[1]/div[2]/div/div[3]/div[2]').click( ) #点击我的表单 sleep(3) driver.find_element_by_xpath( '//*[@id="select_1582538939790"]/div/div').click() #更改表单内容 driver.find_element_by_xpath('/html/body/div[8]/ul/div/div[3]/li').click() driver.find_element_by_xpath( '/html/body/div[1]/div/div/div/div/div[2]/div[1]/div/div/span/span' ).click() #点击确定 confirm = driver.switch_to.alert #处理confirm弹出框 confirm.accept() #点击confirm的确定按钮 sleep(3) driver.quit() if __name__ == '__main__': scheduler = BlockingScheduler() intervalTrigger = CronTrigger(hour=9, minute=15) scheduler.add_job(job, intervalTrigger, id='my_job_id') try: scheduler.start() print('启动成功') except: with open('日志.txt', 'w', encoding='utf8') as file: file.write('%s 发生错误' % datetime.now())
def __init__(self, bot): self.bot = bot self.message = "playing @Doob help | {users:,} members in {guilds:,} servers. Version - {VERSION}" bot.scheduler.add_job(self.set, CronTrigger(second=0))
'user': '******', 'password': '******', 'charset': 'utf8' } db_name = 'stk_opt_info' table_history = 'history' table_now = 'now' """ =========================== 定时器相关 ============================ """ sched = BlockingScheduler() # schedfortest = BlockingScheduler() trigger = OrTrigger([ CronTrigger(hour='9', minute='31-59/3'), CronTrigger(hour='10', minute='*/3'), CronTrigger(hour='11', minute='1-29/3'), CronTrigger(hour='13-14', minute='*/3') ]) trigger_RT = OrTrigger([ CronTrigger(hour='9', minute='31-59', second='*/30'), CronTrigger(hour='10', minute='*', second='*/30'), CronTrigger(hour='11', minute='1-29', second='*/30'), CronTrigger(hour='13-14', minute='*', second='*/30') ]) # trigger2public = OrTrigger([ # CronTrigger(hour='9', minute='31-59/15'), # CronTrigger(hour='10', minute='*/15'),
def shedulers_obj(scheduler): from django.utils import timezone now = timezone.now() print(now) date = datetime.now() + timedelta(seconds=5) # starter() scheduler.add_job( starter_youtube_parse, trigger=CronTrigger(hour=date.hour, minute=date.minute, second=date.second, day_of_week=date.weekday()), id="my_job", max_instances=1, replace_existing=True, ) scheduler.add_job( api_getter_starter_v3, trigger=CronTrigger(hour='*/4'), id="subs_job", max_instances=1, replace_existing=True, ) scheduler.add_job( starter_getter_info, trigger=CronTrigger(hour=date.hour, minute=date.minute, second=date.second), # Every 10 seconds id="my_tob", # The `id` assigned to each job MUST be unique max_instances=1, replace_existing=True, ) date = date + timedelta(seconds=5) scheduler.add_job( interval_job, trigger=CronTrigger(hour=date.hour, minute=date.minute, second=date.second + 10), # Every 10 seconds id="pre_interval_job", # The `id` assigned to each job MUST be unique max_instances=1, replace_existing=True, ) scheduler.add_job( interval_job, trigger=CronTrigger(hour="*/1"), # Every 10 seconds id="interval_job", # The `id` assigned to each job MUST be unique max_instances=1, replace_existing=True, ) scheduler.add_job( executor, trigger=CronTrigger(hour=date.hour, minute=date.minute, second=date.second), # Every 10 seconds id="my_tob", # The `id` assigned to each job MUST be unique max_instances=1, replace_existing=True, ) scheduler.add_job( upload_starter, trigger=CronTrigger(minute="*/30"), # Every 10 seconds id="my_tob", # The `id` assigned to each job MUST be unique max_instances=1, replace_existing=True, )
# encoding=utf-8 import pickle from apscheduler.schedulers.blocking import BlockingScheduler from apscheduler.triggers.combining import OrTrigger from apscheduler.triggers.cron import CronTrigger from CornerDetectAndAutoEmail.AveMaxMinDetect.Global import h_l_pot_info_url from CornerDetectAndAutoEmail.AveMaxMinDetect.MaxMin import judgeAndSendMsg, updatePotInfo from SDK.MyTimeOPT import get_current_datetime_str def time_now(): print(str(get_current_datetime_str())) trigger = OrTrigger([CronTrigger(hour='11', minute='1-59/3')]) sched = BlockingScheduler() sched.add_job(time_now, trigger, day_of_week='mon-fri', max_instances=10) sched.start()
def add_meeting_scheduler(name): cron_interval = db.meet.meetup.find_one({'name': name})['cron_interval'] scheduler.add_job(func=lambda: meeting_monitor(name), trigger=CronTrigger(**cron_interval), id='meeting_monitor_' + name, replace_existing=True)
'target': 'etc', 'against': 'usdt', 'time_elapse': 1, 'time_unit': 'day', 'jitter': 10, }, ] for each in min_jobs: id = '_'.join([ each['target'], each['against'], str(each['time_elapse']), each['time_unit'] ]) scheduler.add_job( func=cron_store_history_prices, trigger=CronTrigger(second=15), # every minute 15 seconds point args=[okcoinSpot, each['target'], each['against']], kwargs={ 'since': None, 'time_elapse': each['time_elapse'], 'time_unit': each['time_unit'] }, id=id, name='Price/min: {}'.format(id), replace_existing=True, ) for each in hour_jobs: id = '_'.join([ each['target'], each['against'], str(each['time_elapse']), each['time_unit']
def test_month_rollover(self, timezone): trigger = CronTrigger(timezone=timezone, day=30) now = timezone.localize(datetime(2016, 2, 1)) expected = timezone.localize(datetime(2016, 3, 30)) assert trigger.get_next_fire_time(None, now) == expected
def start_scheduler2(): trigger = CronTrigger(day_of_week='mon-sun', hour='11-14', minute='*/1') scheduler.add_job(scheduled_job_visit, trigger) # 根据需要进行设置 scheduler.start()
def test_cron_zero_value(self, timezone): trigger = CronTrigger(year=2009, month=2, hour=0, timezone=timezone) assert repr(trigger) == ( "<CronTrigger (year='2009', month='2', hour='0', " "timezone='Europe/Berlin')>")
def addCronJob(self, job_id, func, policy, args): cron = CronTrigger(**policy) self.sched.add_job(func, cron, args=args, id=job_id)
def create_alarm_range_week_time_pm(cls, ext=None, template=None, values=None, history=[]): try: if cls.get_activation() == False: return #hora, minuto, rango ini, rango fin values_x = values[0] if isinstance(values_x, list): range_week_start = values_x[0] range_week_end = values_x[1] duration_h = values_x[2] duration_m = values_x[3] elif isinstance(values_x, tuple): range_week_start = values_x[0] range_week_end = values_x[1] duration_h = values_x[2] duration_m = values_x[3] else: range_week_start = values[0] range_week_end = values[1] duration_h = values[2] duration_m = values[3] duration_h = cls._replace_words_with_numbers(duration_h) duration_m = cls._replace_words_with_numbers(duration_m) for time_interval in time_intervals.values(): for variation in time_interval['variations']: if variation in range_week_start: range_week_start = time_interval['scheduler_interval'] break for time_interval in time_intervals.values(): for variation in time_interval['variations']: if variation in range_week_end: range_week_end = time_interval['scheduler_interval'] break if duration_h is not None and duration_m is not None: idx = get_id() m2 = str(duration_h) + ":" + str(duration_m) + " PM" m2 = cls._time_conversion(m2) m2 = m2.split(":") duration_h = m2[0].strip() duration_m = m2[1].strip() day_of_week = range_week_start + "-" + range_week_end cron1 = CronTrigger(day_of_week=day_of_week, hour=duration_h, minute=duration_m, timezone='America/Bogota') trigger = OrTrigger([cron1]) job = cls.scheduler.add_job(cls._alarm_range_pm, trigger, id=idx, args=[idx]) cls.alarm_pending.append({"id": idx, "job": job, "day_of_week": day_of_week, "hour": duration_h, "minute": duration_m}) if not cls.scheduler.running: cls.scheduler.start() r = template.format("He creado la alarma {0} {1} {2} pm".format(day_of_week, duration_h, duration_m)) cls.response(r) except Exception as e: print(e) r = template.format("No se pudo crear la alarma") cls.response(r)
def jobs(self): trigger = CronTrigger(hour=5) return ((trigger, self.drop_expired_logins), )
summary = '{city} weather summary\n'.format(city=ret["city"]["name"]) for item in weather_items: temp = get_celsium(item["main"]["temp"]) date = datetime.strptime(item["dt_txt"], '%Y-%m-%d %H:%M:%S') local_dt = get_localized_dt(date) time_format = local_dt.strftime('%H:%M o\'clock') weather_info = item["weather"][0]["description"] summary += '{time_format} : {temp:.1f} ({weather_info})\n'.format( weather_info=weather_info, time_format=time_format, temp=temp) smtp = smtplib.SMTP(SMTP_SERVER, SMTP_PORT) smtp.starttls() msg = EmailMessage() smtp.login(SENDER_EMAIL, PASSWORD) msg['Subject'] = PROJECT_NAME msg['From'] = SENDER_EMAIL msg['To'] = [SENDER_EMAIL] msg.set_content(summary) smtp.send_message(msg) smtp.quit() @sched.scheduled_job(CronTrigger(hour=JOB_HOURS, minute=JOB_MINUTES)) def timed_job(): foo() sched.start()
episode_title=ep_schedule["episode"]["title"], ) metadata = { 'episodeID': episode_id, } # send_and_log_pin(topics=[show_id], pin=pin, metadata=metadata) futures.append( executor.submit(send_and_log_pin, topics=[show_id], pin=pin, metadata=metadata)) for _ in concurrent.futures.as_completed(futures): pass print("End of the job") if __name__ == "__main__": logging.basicConfig() logging.getLogger("pebble-timeline").setLevel(logging.DEBUG) logging.getLogger("trakttv").setLevel(logging.INFO) logging.getLogger("scheduler").setLevel(logging.INFO) fetch_shows_and_send_pins() every_night = CronTrigger(hour=3, minute=0, second=40) scheduler = BlockingScheduler() scheduler.add_job(fetch_shows_and_send_pins, trigger=every_night) scheduler.start()
# # api.update_status(status = wonderland) # # time.sleep(60) # api.update_status(status=fireworks) # time.sleep(60) # api.update_status(status = zerofever) # time.sleep(60) api.update_status(status=zerofever2) time.sleep(60) api.update_status(status = totalstreams) time.sleep(60) api.update_status(status = top5string) # time.sleep(86400) if __name__ == "__main__": scheduler = BlockingScheduler() scheduler.add_job(spotify, CronTrigger(minute="1", hour="2")) scheduler.start() # def checker(): # global column # ws = wb.worksheets[0] # if ATEEZSpotify.totalstream() != ws.cell(59, column).value: # spotify() # column += 1 # else: # schedule.every(10).minutes.do(checker) # spotify() # schedule.every().day.at("18:30").do(checker)