Esempio n. 1
0
 def backtest(self,
              start=datetime.datetime(2021, 3, 1),
              end=datetime.datetime.now(),
              log_schedule=[{
                  "minute": "30",
                  "hour": "9",
                  "day_of_week": "mon-fri"
              }]):
     self.init_broker(backtest=True, data=self.data)
     log_trigger = build_trigger(log_schedule)
     algo_trigger = OrTrigger([algo.trigger for algo in self.algos])
     trigger = OrTrigger([algo_trigger, log_trigger])
     logging = isinstance(log_schedule, dict) or len(log_schedule) > 0
     if isinstance(start, int) and not isinstance(end, int):
         start = trading_day_offset(end, -start)
     if not isinstance(start, int) and isinstance(end, int):
         end = trading_day_offset(start, end)
     self.datetime = start
     while self.datetime < end:
         for algo in self.algos:
             if equals_runtime(algo.trigger, self.datetime):
                 print(self.datetime)
                 time = Manager.timezone.localize(self.datetime)
                 self.broker.check_limit_orders(time=time)
                 algo.run_wrapper(time=time, update=False)
         if logging and equals_runtime(log_trigger, self.datetime):
             self.log_state()
         self.datetime = next_runtime(trigger, self.datetime)
     metrics = self.logger.metrics()
     for metric, value in metrics.items():
         print("{metric}: {value:.3f}".format(metric=metric, value=value))
     self.logger.report()
     return metrics
Esempio n. 2
0
 def __init__(self, name, enabled, args = argsTemplate, triggers = [], id = None, priority = -1):
     self.priority = priority
     self.name = name
     self.args = args
     self.triggers = triggers
     self.trigger = OrTrigger(self.triggers)
     self.enabled = enabled if self.triggers else False
     self.id = id
Esempio n. 3
0
    def test_two_datetriggers(self, timezone, serializer):
        date1 = datetime(2020, 5, 16, 14, 17, 30, 254212, tzinfo=timezone)
        date2 = datetime(2020, 5, 18, 15, 1, 53, 940564, tzinfo=timezone)
        trigger = OrTrigger([DateTrigger(date1), DateTrigger(date2)])
        if serializer:
            trigger = serializer.deserialize(serializer.serialize(trigger))

        assert trigger.next() == date1
        assert trigger.next() == date2
        assert trigger.next() is None
Esempio n. 4
0
    def attAerador(self, agenda):

        # atualiza o estado atual para nova configuração
        # se agenda está vazia: deslige
        if agenda:
            now = dt.datetime.now()
            last_on = []
            last_off = []
            for evento in agenda:
                inicio = dt.datetime.combine(date=dt.date.today(),
                                             time=evento[0])
                if inicio > now:
                    inicio -= dt.timedelta(days=1)
                last_on.append(inicio)

                fim = dt.datetime.combine(date=dt.date.today(), time=evento[1])
                if fim > now:
                    fim -= dt.timedelta(days=1)
                last_off.append(fim)

            last_on = max(last_on)
            last_off = max(last_off)

            if last_on > last_off:
                ligar_aerador()
            else:
                desligar_aerador()
        else:
            desligar_aerador()

        # exclui alarmes antigos
        jobs = scheduler.get_jobs()
        for job in jobs:
            if job.id == 'ligar_aerador' or job.id == 'desligar_aerador':
                job.remove()

        # cria alarmes para o acionamento dos aeradores.
        # coloquei o replace() para garantir que a açao de ligar será
        # executada depois de desligar, assim se houver eventos de desligar e
        # ligar no mesmo horário 'ligar' será o último a ser executador
        lista_alarmes = [
            self.geraCronTrigger(evento[0].replace(second=1))
            for evento in agenda
        ]
        trigger = OrTrigger(lista_alarmes)
        scheduler.add_job(ligar_aerador, trigger, id='ligar_aerador')

        # cria alarmes para o desligamento
        lista_alarmes = [self.geraCronTrigger(evento[1]) for evento in agenda]
        trigger = OrTrigger(lista_alarmes)
        scheduler.add_job(desligar_aerador, trigger, id='desligar_aerador')
Esempio n. 5
0
 def test_repr(self, timezone):
     date1 = timezone.localize(datetime(2020, 5, 16, 14, 17, 30, 254212))
     date2 = timezone.localize(datetime(2020, 5, 18, 15, 1, 53, 940564))
     trigger = OrTrigger([DateTrigger(date1), DateTrigger(date2)])
     assert repr(trigger) == (
         "OrTrigger([DateTrigger('2020-05-16T14:17:30.254212+02:00'), "
         "DateTrigger('2020-05-18T15:01:53.940564+02:00')])")
Esempio n. 6
0
 def configure(self, scheduler, func=joinMeeting, jobstore = 'default', **changes):
     if self.id:
         changes = {change: changes[change] for change in changes if changes[change] is not None}
         if 'triggers' in changes:
             if changes['triggers'] == []:
                 self.disable(scheduler)
             changes['trigger'] = OrTrigger(changes['triggers'])
             self.triggers = changes['triggers']
             self.trigger = changes['trigger']
             changes.pop('triggers')
         if 'enabled' in changes:
             self.enable(scheduler) if changes['enabled'] else self.disable(scheduler)
             changes.pop('enabled')
         if 'link' in changes:
             self.args = Task.args_from_browser(changes['link'])
             changes['args'] = [self]
             changes.pop('link')
         if 'priority' in changes:
             self.priority = changes['priority']
             changes['args'] = [self]
             changes.pop('priority')
         job = scheduler.modify_job(self.id, jobstore, **changes)
         self.__dict__.update(Task.task_from_job(job).__dict__)
     else:
         job = scheduler.add_job(func, trigger=self.trigger, args=[self], next_run_time = None, name=self.name, jobstore='default', executor='default')
         if self.enabled:
             scheduler.resume_job(job.id, jobstore)
         self.__dict__.update(Task.task_from_job(job).__dict__)
Esempio n. 7
0
 def test_repr(self, timezone):
     date1 = datetime(2020, 5, 16, 14, 17, 30, 254212, tzinfo=timezone)
     date2 = datetime(2020, 5, 18, 15, 1, 53, 940564, tzinfo=timezone)
     trigger = OrTrigger([DateTrigger(date1), DateTrigger(date2)])
     assert repr(trigger) == (
         "OrTrigger([DateTrigger('2020-05-16 14:17:30.254212+02:00'), "
         "DateTrigger('2020-05-18 15:01:53.940564+02:00')])")
def start():
    scheduler = BackgroundScheduler()
    trigger = OrTrigger([
        CronTrigger(hour='23', minute='59-60'),
    ])
    # scheduler.add_job(notificationsJob, 'interval', minutes=30)
    scheduler.add_job(notificationsJob, trigger)
    scheduler.start()
Esempio n. 9
0
def parse_triggers(data: Union[Dict, None]):
    if data is None or not data.get("triggers", False):  # No triggers
        return None

    if len(data["triggers"]) > 1:  # Multiple triggers
        return OrTrigger([get_trigger(t_data) for t_data in data["triggers"]])
    else:
        return get_trigger(data["triggers"][0])
Esempio n. 10
0
    def test_two_interval_triggers(self, timezone, serializer):
        start_time = datetime(2020, 5, 16, 14, 17, 30, 254212, tzinfo=timezone)
        end_time1 = start_time + timedelta(seconds=16)
        end_time2 = start_time + timedelta(seconds=18)
        trigger = OrTrigger([
            IntervalTrigger(seconds=4,
                            start_time=start_time,
                            end_time=end_time1),
            IntervalTrigger(seconds=6,
                            start_time=start_time,
                            end_time=end_time2)
        ])
        if serializer:
            trigger = serializer.deserialize(serializer.serialize(trigger))

        assert trigger.next() == start_time
        assert trigger.next() == start_time + timedelta(seconds=4)
        assert trigger.next() == start_time + timedelta(seconds=6)
        assert trigger.next() == start_time + timedelta(seconds=8)
        assert trigger.next() == start_time + timedelta(seconds=12)
        assert trigger.next() == start_time + timedelta(seconds=16)
        # The end time of the 4 second interval has been reached
        assert trigger.next() == start_time + timedelta(seconds=18)
        # The end time of the 6 second interval has been reached
        assert trigger.next() is None
Esempio n. 11
0
 def exposed_run_job(self, job_id, jobstore='default'):
     job = scheduler.get_job(job_id)
     trigger = job.trigger
     job.modify(trigger = OrTrigger([Trigger(day_of_week=6, hour=0, minute=0)]))
     job.modify(next_run_time = datetime.now())
     if not trigger.triggers:
         scheduler.pause_job(job_id, jobstore)
     job.modify(trigger = trigger)
     return scheduler.get_job(job_id)
Esempio n. 12
0
 def trigger(self, timezone):
     return OrTrigger([
         CronTrigger(month='5-8',
                     day='6-15',
                     end_date=timezone.localize(datetime(2017, 8, 10))),
         CronTrigger(month='6-9',
                     day='*/3',
                     end_date=timezone.localize(datetime(2017, 9, 7)))
     ])
Esempio n. 13
0
    def create_alarm_range_time_week_am(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):
                duration_h = values_x[0]
                duration_m = values_x[1]
                range_week_start = values_x[2]
                range_week_end = values_x[3]
            else:
                duration_h = values_x
                duration_m = values[1]
                range_week_start = values[2]
                range_week_end = 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) + " AM"
                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_am, 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} am".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)
Esempio n. 14
0
def build_trigger(schedule):
    if isinstance(schedule, list) and len(schedule) != 1:
        trigger = OrTrigger([CronTrigger(**cron) for cron in schedule])
    elif isinstance(schedule, list) and len(schedule) == 1:
        cron = schedule[0]
        trigger = CronTrigger(**cron)
    else:
        cron = schedule
        trigger = CronTrigger(**cron)
    return trigger
Esempio n. 15
0
    def create_reminder_time_action_am(cls,
                                       ext=None,
                                       template=None,
                                       values=None,
                                       history=[]):
        try:
            if cls.get_activation() == False:
                return

            values_x = values[0]
            duration_h = values_x[0]
            duration_m = values_x[1]
            action = values_x[2]

            duration_h = int(cls._replace_words_with_numbers(duration_h))
            duration_m = int(cls._replace_words_with_numbers(duration_m))

            if duration_h and duration_m:

                m2 = str(duration_h) + ":" + str(duration_m) + " AM"
                m2 = cls._time_conversion(m2)
                m2 = m2.split(":")
                m2_h = m2[0].strip()
                m2_m = m2[1].strip()

                cron1 = CronTrigger(hour=m2_h,
                                    minute=m2_m,
                                    timezone='America/Bogota')
                trigger = OrTrigger([cron1])
                idx = "redimer_" + m2_h + "_" + m2_m

                args = [idx, action, m2_h, m2_m]

                job = cls.scheduler.add_job(cls.reminder_am,
                                            trigger,
                                            id=idx,
                                            args=args)

                cls.alarm_pending.append({
                    "id": idx,
                    "job": job,
                    "action": action
                })

                if not cls.scheduler.running:
                    cls.scheduler.start()

                r = template.format(
                    "He creado un recordatorio en {}:{} am".format(
                        duration_h, duration_m))
                cls.response(r)
        except Exception as e:
            print(e)
            r = template.format("No se pudo crear el recordatorio")
            cls.response(r)
    def __init__(self, debug=False):
        TORNADO_SETTINGS['debug'] = debug
        if debug:
            LOGGING_CONSOLE_CONFIG['level'] = logging.DEBUG
        dictConfig(LOGGING_CONFIG)

        tornado.web.Application.__init__(self, [
            (r"/", common.HomeHandler),
            (r"/api/xml/(?P<db_id>[\d\_]+)?/*", xml_list.XmlGridHandler),
            (r"/api/xml/ie/(?P<db_id>[\d\_]+)?", xml_list.XmlImpExpHandler),
            (r"/api/xml/validate/(?P<xml_id>[\d\_]+)?/",
             xml_bldr.XmlValidationHandler),
            (r"/api/xml/tree/(?P<xml_id>[\d\_]+)/(?P<node_id>[\d\_]+)?",
             xml_bldr.XmlNodeHandler),
            (r"/api/xml/attr/(?P<db_id>[\d\_]+)?",
             xml_bldr.XmlNodeAttrHandler),
            (r"/api/xml/attr/available/(?P<node_id>[\d\_]+)/?",
             xml_bldr.XmlNodeAvailableAttrHandler),
            (r"/api/xml/attr/validate/", xml_bldr.XmlNodeAttrValidateHandler),
            (r"/api/xml/epoch/(?P<xml_id>[\d\_]+)/*",
             xml_bldr.XmlEpochHandler),
            (r"/api/xml/template/(?P<node_id>[\d\_]+)?/*",
             xml_tpl.XmlTemplateHandler),
            (r"/api/nrl/sensors/(?P<key>[^/]+)?",
             xml_nrl.XmlNrlSensorsHandler),
            (r"/api/nrl/sensor/response/", xml_nrl.XmlNrlSensorRespHandler),
            (r"/api/nrl/dataloggers/(?P<key>[^/]+)?",
             xml_nrl.XmlDataloggersHandler),
            (r"/api/nrl/datalogger/response/",
             xml_nrl.XmlDataloggerRespHandler),
            (r"/api/nrl/channel/response/preview/",
             xml_nrl.XmlChannelRespHandler),
            (r"/api/wizard/channel/(?P<station_node_id>[\d\_]+)?/*",
             wizard.CreateChannelHandler),
            (r"/api/wizard/guess/code/", wizard.CreateGuessCodeHandler),
            (r"/api/help/(?P<key>[\w\_]+)?/*", common.HelpHandler, None,
             'HelpHandler'),
            (r"/api/cfg/(?P<db_id>[\d\_]+)?/*", config.ConfigHandler),
            (r"/api/attr/(?P<node_id>[\d\_]+)?/*", config.AttributeHandler),
        ],
                                         default_handler_class=ErrorHandler,
                                         **TORNADO_SETTINGS)

        self.scheduler = TornadoScheduler()
        self.scheduler.start()
        # start sync nrl job
        trigger = OrTrigger([
            DateTrigger(run_date=datetime.now() + timedelta(seconds=10)),
            CronTrigger(**NRL_CRON)
        ])

        self.nrl_sync_job = self.scheduler.add_job(self.sync_nrl, trigger)

        ProcessMixin.__init__(self)
Esempio n. 17
0
def main():
    if request.method == 'POST':
        company_name = request.form['cname']
        frequency = request.form['freq']
        start_time = request.form['stime']
        end_time = request.form['etime']
        company_url = search_url(company_name)

        if company_url:
            c_url = requests.get(company_url)
            soup = BS(c_url.text, "html.parser")

            # Returns bse and nse contents if present
            b, n = scrape(soup)

            # Adding info to Database
            bse_db = mongo.db.bse
            nse_db = mongo.db.nse

            if b:
                bse_entry = bse_db.insert({'BSE Date': b['bse_date'], 'BSE Time': b['bse_time'], \
                            'BSE Current Price': b['bse_current_price'], 'BSE absolute price': b['bse_abs_price'],\
                            'BSE percentage': b['bse_per'], 'BSE Volume': b['bse_volume'], \
                            'BSE Prev close': b['bse_prev_close'], 'BSE Open price': b['bse_open_price'],\
                            'BSE bid price': b['bse_bid_price'], 'BSE offer price': b['bse_offer_price']})
            if n:
                nse_entry = nse_db.insert({'NSE Date': n['nse_date'], 'NSE Time':n['nse_time'], \
                           'NSE Current Price': n['nse_current_price'], 'NSE absolute price': n['nse_abs_price'], \
                           'NSE percentage': n['nse_per'], 'NSE Volume': n['nse_volume'], \
                           'NSE Prev close': n['nse_prev_close'], 'NSE Open price': n['nse_open_price'], \
                           'NSE bid price': n['nse_bid_price'], 'NSE offer price': n['nse_offer_price']})

            # Job scheduling
            if frequency and start_time and end_time:

                # Check to ensure start time is before end time
                if start_time < end_time:
                    trigger = OrTrigger([
                        CronTrigger(hour=start_time + '-' + end_time,
                                    minute=frequency)
                    ])
                    scheduler.add_job(main, trigger)
                else:
                    error = "End time should be after start time"
                    return render_template('index.html', error=error)

            if bse_db or nse_db:
                return redirect(url_for('info'))

        else:
            error = "Sorry! Company not found."
            return render_template('index.html', error=error)

    return render_template('index.html')
 def start_e_Ticketing(self):
     try:
         print("예약 시작")
         trigger = OrTrigger([
             c.CronTrigger(hour=self.re_hh_txt.text(),
                           minute=self.re_mm_txt.text())
             # i.IntervalTrigger(seconds=0.5)
         ])
         self.sched.add_job(self.start_Ticketing2, trigger)
         self.sched.start()
     except Exception as e:
         print('예외 맨', e)
Esempio n. 19
0
 def exposed_run_job(self, job_id, jobstore='default'):
     job = scheduler.get_job(job_id)
     trigger = job.trigger
     job.modify(trigger=OrTrigger([NeverTrigger()]))
     # tree_print(job.trigger.triggers, 1)
     job.modify(next_run_time=datetime.now())
     # tree_print(job.trigger.triggers, 1)
     if not trigger.triggers:
         scheduler.pause_job(job_id, jobstore)
     # tree_print(job.trigger, 1)
     job.modify(trigger=trigger)
     # tree_print(job.trigger, 1)
     return scheduler.get_job(job_id)
Esempio n. 20
0
def parse_triggers(data: Union[Dict, None]):
    if data is None or not data.get("triggers", False):  # No triggers
        return None

    if len(data["triggers"]) > 1:  # Multiple triggers
        triggers_list = [get_trigger(t_data) for t_data in data["triggers"]]
        triggers_list = [
            t for t in triggers_list if not check_expired_trigger(t)
        ]
        if not triggers_list:
            return None
        return OrTrigger(triggers_list)
    else:
        trigger = get_trigger(data["triggers"][0])
        if check_expired_trigger(trigger):
            return None
        return trigger
Esempio n. 21
0
def start():

    scheduler = BackgroundScheduler()

    scheduler.add_jobstore(DjangoJobStore(), "default")

    ##run every 80 minutes from 8am EST to 6pm EST (1pm-11pm UTC)
    #trigger = OrTrigger([
    #     CronTrigger(hour='13-23', minute='*/80' timezone='UTC')
    #])

    trigger = OrTrigger([CronTrigger(minute='*/1', timezone='UTC')])
    scheduler.add_job(tweetNextEvent,
                      trigger=trigger,
                      name='tweetNextEvent',
                      jobstore='default',
                      max_instances=1,
                      replace_existing=True)
    register_events(scheduler)
    scheduler.start()
    print("Scheduler started...", file=sys.stdout, flush=True)
Esempio n. 22
0
def add_job(func,
            *,
            weeks=0,
            days=0,
            hours=0,
            minutes=0,
            seconds=0,
            now=True,
            **kwargs):
    job = scheduler.add_job(
        func,
        **kwargs,
        trigger=OrTrigger([
            *([DateTrigger(run_date=datetime.now())] if now else []),
            IntervalTrigger(
                weeks=weeks,
                days=days,
                hours=hours,
                minutes=minutes,
                seconds=seconds,
            ),
        ]),
    )
Esempio n. 23
0
def schedule_stock_alerts():
    global redis_store
    try:
        scheduler = BackgroundScheduler(timezone=utc)
        _refresh_user_triggered_stock_alert_tracker(redis_store)
        cron1 = CronTrigger(day_of_week='mon-fri',
                            hour='13',
                            minute='30,35,40,45,50,55',
                            timezone=utc)
        cron2 = CronTrigger(day_of_week='mon-fri',
                            hour='14-20',
                            minute='*/5',
                            timezone=utc)
        trigger = OrTrigger([cron1, cron2])
        scheduler.add_job(send_stock_alerts, trigger)
        scheduler.add_job(
            lambda: _refresh_user_triggered_stock_alert_tracker(redis_store),
            'cron',
            day_of_week='mon-fri',
            hour='13',
            minute=30)
        scheduler.start()
    except Exception as e:
        print('Error while scheduling alerts', e, file=sys.stderr)
Esempio n. 24
0
        c_sec = int(datetime.now().strftime("%S"))

        print('%02d:%02d:%02d - Variable: %d ' %
              (c_hour, c_min, c_sec, variable.value))

        time.sleep(2)


if __name__ == "__main__":

    m = multiprocessing.Manager()
    variable = m.Value('i', 60)

    schedfortest = BlockingScheduler()

    trigger_test = OrTrigger([CronTrigger(minute='*/1')])

    schedfortest.add_job(callbacktotal,
                         trigger_test,
                         minute='*/2',
                         max_instances=10)

    schedfortest.start()

    scheduler = AsyncIOScheduler()
    scheduler.add_job(day_limits,
                      'cron',
                      hour=7,
                      misfire_grace_time=3600,
                      timezone='GB')
    scheduler.add_job(night_limits,
Esempio n. 25
0
    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
Esempio n. 26
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.')
Esempio n. 27
0
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()
Esempio n. 28
0
        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,
#               second='*/35', misfire_grace_time=3600, coalesce=True)
Esempio n. 29
0
# 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()
Esempio n. 30
0
    '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'),
#     CronTrigger(hour='11', minute='1-29/15'),
#     CronTrigger(hour='13-14', minute='*/15')