zoukankan      html  css  js  c++  java
  • thinkphp5+python.apscheduler实现计划任务

    1.thinkphp5配置自定义命令行

    /application/console/command
    
    namespace appconsolecommand;
    
    use thinkconsoleCommand;
    use thinkconsoleInput;
    use thinkconsoleinputArgument;
    use thinkconsoleinputOption;
    use thinkconsoleOutput;
    use appautotask	ask;
    
    class Test extends Command{
    
        /**
         * 定义命令
         * 命令名称是 test
         */
        protected function configure()
        {
            $this->setName('test')->setDescription('Here is the market test task ');
        }
        /**
         * 命令执行的内容
         * @param Input $input
         * @param Output $output
         */
        protected function execute(Input $input, Output $output)
        {
            $output->writeln("StartCommand Test:");
            $object = new appautotask	askTest();
            $object->run();
            $output->writeln("End Test..");
        }
    }
    

    2.python安装APScheduler是Python的一个定时任务框架,可以很方便的满足用户定时执行或者周期执行任务的需求,它提供了基于日期date、固定时间间隔interval 、以及类似于Linux上的定时任务crontab类型的定时任务。并且该框架不仅可以添加、删除定时任务,还可以将任务存储到数据库中,实现任务的持久化,所以使用起来非常方便。

    更多了解  https://pypi.org/project/APScheduler/

    pip install apscheduler
    
    #!/user/bin/env python
    #
    # -*- coding: UTF-8 -*-
    
    import time
    from apscheduler.schedulers.blocking import BlockingScheduler
    import logging
    import os
    
    logger = logging.getLogger()
    logger.setLevel(logging.DEBUG)
    
    fileHandler = logging.FileHandler('./log/task.log', mode='w', encoding='UTF-8')
    fileHandler.setLevel(logging.NOTSET)
    
    formatter = logging.Formatter('%(asctime)s - %(message)s')
    fileHandler.setFormatter(formatter)
    
    logger.addHandler(fileHandler)
    
    def task():
        output = os.popen('php think test')
        logger.info(output)
        print output.read()
    
    if __name__ == '__main__':
    	scheduler = BlockingScheduler()
    	scheduler.add_job(task, 'cron', hour='9-22', second = '*/1')
    	#scheduler.add_job(task, 'cron', hour='9-22', second = '*/1')
    	scheduler.add_job(task, 'cron', hour='9-22', second = '*/1')
    	scheduler.add_job(task, 'cron', hour = 22,minute = 1)
    	scheduler.add_job(task, 'interval', minutes=1)
    	print('Press Ctrl+{0} to exit'.format('Break' if os.name == 'nt' else 'C'))
    
    try:
        scheduler.start()
    except (KeyboardInterrupt, SystemExit):
        pass
    

      

  • 相关阅读:
    CodeForces 288A Polo the Penguin and Strings (水题)
    CodeForces 289B Polo the Penguin and Matrix (数学,中位数)
    CodeForces 289A Polo the Penguin and Segments (水题)
    CodeForces 540C Ice Cave (BFS)
    网站后台模板
    雅图CAD
    mbps
    WCF学习-协议绑定
    数据库建表经验总结
    资源位置
  • 原文地址:https://www.cnblogs.com/shione/p/10905987.html
Copyright © 2011-2022 走看看