示例#1
0
async def main(kafka_topic=KAFKA_TOPIC, sites=SITES, run_total=None):

    ssl_context = None
    security_protocol = 'PLAINTEXT'
    if KAFKA_SSL_CA is not None:
        ssl_context = create_ssl_context(cafile=KAFKA_SSL_CA,
                                         certfile=KAFKA_SSL_CERT,
                                         keyfile=KAFKA_SSL_KEY)
        security_protocol = 'SSL'

    producer = AIOKafkaProducer(bootstrap_servers=KAFKA_HOST,
                                value_serializer=serializer,
                                security_protocol=security_protocol,
                                ssl_context=ssl_context)

    msh = Scheduler()
    try:
        for site in sites:
            url = site['url']
            log.info(f'Monitoring {url}')
            msh.add_job(
                CronJob(run_total=run_total,
                        name=f'check_{url}').every().second.go(
                            check_site, producer, site, kafka_topic))
        await producer.start()
        await msh.start()
    except Exception as e:
        log.error(f'Got error starting scheduler: {e}')
        raise e
    finally:
        await producer.stop()
示例#2
0
    def run(self):
        self.backend = Backend().init()
        if not self.backend:
            return
        if not Auth().init():
            return

        Launchy.attach_loop(self.loop)

        worker = Worker()
        self.task_worker = asyncio.ensure_future(worker.run())

        backend_worker = BackendWorker()
        self.task_backend_worker = asyncio.ensure_future(backend_worker.run())

        aptly_worker = AptlyWorker()
        self.task_aptly_worker = asyncio.ensure_future(aptly_worker.run())

        notification_worker = NotificationWorker()
        self.task_notification_worker = asyncio.ensure_future(notification_worker.run())

        cfg = Configuration()
        daily_cleanup = cfg.aptly.get("daily_cleanup")
        if daily_cleanup is False or daily_cleanup == "off" or daily_cleanup == "disabled":
            return

        if not daily_cleanup:
            daily_cleanup = "04:00"
        cleanup_sched = Scheduler(locale="en_US")
        cleanup_job = CronJob(name='cleanup').every().day.at(daily_cleanup).go(self.cleanup_task)
        cleanup_sched.add_job(cleanup_job)
        self.task_cron = asyncio.ensure_future(cleanup_sched.start())

        app.set_context_functions(MoliorServer.create_cirrina_context, MoliorServer.destroy_cirrina_context)
        app.run(self.host, self.port, logger=self.logger, debug=self.debug)
    def enable_cron(self, peer_id):
        day = int(self.crons[peer_id].day)
        hour = self.crons[peer_id].hour
        username = self.crons[peer_id].username

        job = CronJob(name=peer_id, loop=self.loop).weekday(day).at(hour).go(
            self.callback, peer_id, username)

        self.scheduler.add_job(job)
示例#4
0
def schedule():
    print("Initializing schedule", flush=True)
    loop = asyncio.get_event_loop()
    loop.call_later(
        DELAY, scheduler.add_job,
        CronJob(name='snapshot', tolerance=3600)
        .every(FREQUENCY).second
        .go(capture_exceptions, backup),
    )

    asyncio.create_task(scheduler.start())
示例#5
0
 async def add_cron_job(self, pre, question_key):
     if pre.messageType == "everyday":
         time = pre.data.get("time")
         time_array = time.split(":")
         time = f"{time_array[0]}:{time_array[1]}"
         job = CronJob(name=question_key).every().day.at(time).go(
             report_cron_status, question_key)
         msh.add_job(job)
     elif pre.messageType == "interval":
         job = CronJob(name=question_key).every(
             pre.data.get("second")).second.go(report_cron_status,
                                               question_key)
         msh.add_job(job)
     elif pre.messageType == "date":
         job = CronJob(name=question_key,
                       tolerance=100).at("2019-01-15 16:12").go(
                           report_cron_status, question_key)
         msh.add_job(job)
     elif pre.messageType == "weekday":
         time = pre.data.get("time")
         time_array = time.split(":")
         time = f"{time_array[0]}:{time_array[1]}"
         logger.debug(time)
         for i in range(0, 5):
             job = CronJob(name=question_key).weekday(i).at(time).go(
                 report_cron_status, question_key)
             msh.add_job(job)
     elif pre.messageType == "weekend":
         time = pre.data.get("time")
         time_array = time.split(":")
         time = f"{time_array[0]}:{time_array[1]}"
         for i in range(5, 7):
             job = CronJob(name=question_key).weekday(i).at(time).go(
                 report_cron_status, question_key)
             msh.add_job(job)
     elif pre.messageType == "custom":
         dates = pre.data.get("date")
         time = pre.data.get("time")
         time_array = time.split(":")
         time = f"{time_array[0]}:{time_array[1]}"
         for i in dates:
             job = CronJob(name=question_key).weekday(i).at(time).go(
                 report_cron_status, question_key)
             msh.add_job(job)
     ee.on(f"{question_key}/state", self.handle_status)
示例#6
0
from async_cron.job import CronJob
from async_cron.schedule import Scheduler
from async_cron.job_loader import FileJobLoader


async def test(*args, **kwargs):
    print(args, kwargs)


def tt(*args, **kwargs):
    print(args, kwargs)


msh = Scheduler(locale="zh_CN")
myjob = CronJob(name='test', run_total=3).every(5).second.go(test, (1, 2, 3),
                                                             name=123)
job2 = CronJob(name='exact', tolerance=100).at("2019-01-15 16:12").go(tt, (5),
                                                                      age=99)
job3 = CronJob(name='very_hour').every().hour.at(":44").go(tt, (5), age=99)

# add timezone infomation using at func, such as : UTC/GMT+08:00, time_shift=8
job3 = CronJob(name='hour').every().hour.at(
    ":06", time_shift=8).from_hour(18).to_hour(20).go(tt, (5), age=99)
job4 = CronJob(name='minute').every(1).minute.go(tt, (5), age=99)
job5 = CronJob(name='weekday').weekday(2).at("11:18").go(tt, (5), age=99)
job6 = CronJob(name='monthday').monthday(16).at("11:22").go(tt, (5), age=99)
job7 = CronJob(name='monthday').every(5).monthday(16).at("11:22").go(tt, (5),
                                                                     age=99)

msh.add_job(myjob)
msh.add_job(job2)
示例#7
0
from async_cron.schedule import Scheduler


class SchedulerKernel(KernelActor):
    def __init__(self, *args, **kwargs):
        super(SchedulerKernel, self).__init__(*args, **kwargs)
        self.sch = Scheduler()

    async def msg_handler(self, msg=None):
        await self.sch.start()


async def test(*args, **kwargs):
    print(args, kwargs)


def tt(*args, **kwargs):
    print(args, kwargs)


myjob = CronJob(name="test").every(5).second.go(test, (1, 2, 3), name=123)
job2 = (CronJob(name="tt",
                tolerance=100).every().at("2019-01-15 16:12").go(tt, (5),
                                                                 age=99))

bb = SchedulerKernel(mail_station=HashMailStation())
bb.sch.add_job(myjob)
bb.sch.add_job(job2)
bb.tell_nowait("hahaha")
bb.start()
示例#8
0
import asyncio
import os
from async_cron.job import CronJob
from async_cron.schedule import Scheduler
from pypi_tools.tracker import tracker
import sentry_sdk

scheduler = Scheduler(locale="en_US")

#sentry_sdk.init(os.environ["SENTRY_PATH"])

tracker_job = CronJob(name='track_packages').every(3).minute.go(tracker)

#scheduler.add_job(tracker_job)

if __name__ == '__main__':
    # Execute broadcaster
    try:
        asyncio.get_event_loop().run_until_complete(scheduler.start())
    except KeyboardInterrupt:
        print('Scheduler exit')
    except Exception as e:
        sentry_sdk.capture_exception(e)
示例#9
0
 def __init__(self, bot):
     self.bot = bot
     job = CronJob(name='superenalotto_extract').every().day.at('00:00').go(self.extract_superenalotto)
     #job = CronJob(name='superenalotto_extract').every(30).second.go(self.extract_superenalotto)
     self.bot.scheduler.add_job(job)
示例#10
0
文件: main.py 项目: cleviry/Souei
    await verify_error_proxy_task()
    await update_squid_task()


@cron_wait
async def fetch_new_proxy_task():
    logger.info("run fetch_new_proxy_task")
    await spider.run_spider()
    await verifier.verify_new_proxy()
    # await verify_error_proxy_task()
    await update_squid_task()


if __name__ == '__main__':
    logger.info("start")

    loop = asyncio.get_event_loop()
    loop.run_until_complete(update_squid_task())

    msh = Scheduler()
    msh.add_job(CronJob().every(10).minute.go(verify_ok_proxy_task))
    msh.add_job(CronJob().every(30).minute.go(fetch_new_proxy_task))
    try:
        loop.run_until_complete(asyncio.wait([
            msh.start(),
            run_api_server(),
        ]))
        loop.run_forever()
    except KeyboardInterrupt:
        print('exit')