• 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
    

      

  • 相关阅读:
    thymeleaf 模板引擎
    thymeleaf 内联语法
    thymeleaf 局部变量、属性优先级、注释
    PYNQ上手笔记 | ① 启动Pynq
    MSP430F5529时钟系统深究
    C#上位机开发(四)—— SerialAssistant功能完善
    C#上位机开发(三)—— 构建SerialAssistant雏形
    C#上位机开发(二)—— Hello,World
    C#上位机开发(一)—— 了解上位机
    FPGA学习笔记(八)—— 状态机设计实例之独立按键消抖
  • 原文地址:https://www.cnblogs.com/shione/p/10905987.html
Copyright © 2020-2023  润新知