python自动化测试中APScheduler Flask的应用示例

以下是关于“python自动化测试中APScheduler Flask的应用示例”的详细讲解:

简介

APScheduler 是一个轻量级的 Python 定时任务调度框架,可以添加多个任务,可以动态添加修改和删除任务,先来看一下简单示例:

from apscheduler.schedulers.blocking import BlockingScheduler

def job():
    print('job start...')

scheduler = BlockingScheduler()
scheduler.add_job(job, 'interval', seconds=5)
scheduler.start()

这个简单的例子通过APScheduler实现了每五秒输出一个“job start..."的效果。

Flask是一个用Python编写的轻量级Web应用框架,具有易于扩展、关注URL和view函数的小型化等优点,也是 Python 中最流行的 Web 框架之一。

应用示例

示例一:使用APScheduler实现定时爬取数据

  1. 安装APScheduler(如果没有安装):
pip install apscheduler
  1. 下载需要爬取的数据(以博客园为例):
import requests
from bs4 import BeautifulSoup

def getData():
    url = 'https://www.cnblogs.com/'
    res = requests.get(url)
    soup = BeautifulSoup(res.text, 'html.parser')
    print(soup)
  1. 配置APScheduler
from apscheduler.schedulers.blocking import BlockingScheduler
from apscheduler.triggers.interval import IntervalTrigger

def timer():
    scheduler = BlockingScheduler()
    scheduler.add_job(func=getData, trigger=IntervalTrigger(seconds=30))
    scheduler.start()

if __name__ == '__main__':
    timer()

这个代码块实现了每30秒爬取一次博客园数据的效果。

  1. 在Flask中实现定时任务
from apscheduler.schedulers.background import BackgroundScheduler
from flask import Flask
import datetime

app = Flask(__name__)

@app.route("/")
def hello():
    now = datetime.datetime.now()
    return f"Hello, now time is {now}"

def job():
    print('Run the job at: %s' % datetime.datetime.now())

if __name__ == '__main__':
    scheduler = BackgroundScheduler()
    scheduler.add_job(job, 'interval', seconds=10)
    scheduler.start()
    app.run()

这个代码块实现了每10秒输出“Run the job at...”的效果。

示例二:使用APScheduler和Flask实现定时任务记录

  1. 配置数据库
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///db.sqlite'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
db = SQLAlchemy(app)

class JobRecord(db.Model):
    __tablename__ = 'jobs'
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(255))
    description = db.Column(db.Text)
    execute_time = db.Column(db.DateTime)

    def __str__(self):
        return "<JobRecord(name='%s', description='%s', execute_time='%s')>" % \
               (self.name, self.description, self.execute_time)
  1. 编写视图函数
from flask import jsonify
from apscheduler.schedulers.background import BackgroundScheduler
import datetime

@app.route("/")
def hello():
    now = datetime.datetime.now()
    return f"Hello, now time is {now}"

def job():
    job_record = JobRecord(name="Test Job", description="Test Job Description",
                           execute_time=datetime.datetime.now())
    db.session.add(job_record)
    db.session.commit()

@app.route("/jobs")
def joblist():
    jobs = JobRecord.query.all()
    res = []
    for j in jobs:
        res.append({
            "name" : j.name,
            "description" : j.description,
            "execute_time" : str(j.execute_time)
        })
    return jsonify(res)

if __name__ == '__main__':
    db.create_all()
    scheduler = BackgroundScheduler()
    scheduler.add_job(job, 'interval', seconds=10)
    scheduler.start()
    app.run()

在这个代码块中,我们每隔10秒钟就会往数据库中插入一条记录,同时我们还可以通过"/jobs"路由查看已经执行的所有任务次数。

这就是使用APScheduler Flask的应用示例的完整攻略,希望对你有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python自动化测试中APScheduler Flask的应用示例 - Python技术站

(0)
上一篇 2023年5月16日
下一篇 2023年5月16日

相关文章

  • python学习开发mock接口

    Python学习开发Mock接口 在进行前后端项目开发中,前后端联调过程中可能会出现前后端开发进度不一致或者依赖的接口尚未完成等问题,导致耗费大量时间等问题。这时可以使用Mock接口的技术手段,在后端接口未完成的情况下,模拟数据返回从而达到开发目的。 本篇攻略将介绍Python Mock接口的开发,并包含两个示例说明。 准备工作 安装Python开发环境 本…

    Flask 2023年5月16日
    00
  • Flaks基础之在URL中添加变量的实现详解

    下面我将详细讲解“Flask基础之在URL中添加变量的实现详解”的攻略,主要包括以下内容: 1. 如何在Flask中添加URL变量 在Flask中,我们可以在URL中通过添加变量来动态地生成不同的URL。具体实现方式是将需要带入变量的部分用尖括号(<>)包含起来,例如: @app.route(‘/user/<username>’) d…

    Flask 2023年5月16日
    00
  • flask路由分模块管理及自定义restful响应格式详解

    让我来详细讲解一下 “flask路由分模块管理及自定义restful响应格式详解”。 分模块管理路由 对于复杂的 Flask 应用程序,通常需要将路由根据其功能进行分类和组织。这便是 Flask 蓝图的用处。蓝图可以让我们更好的组织视图函数及其关联的路由。 以下是 Flask 蓝图的使用方式: 导入 Blueprint 类 pythonfrom flask …

    Flask 2023年5月16日
    00
  • Flask模板引擎Jinja2使用实例

    下面是关于“Flask模板引擎Jinja2使用实例”的详细攻略,包含两条示例说明。 简介 Jinja2是Flask框架使用的默认模板引擎,它是一个现代化的,基于模板的多功能工具,可以生成静态文本,XML或其他格式的动态内容。在Flask应用程序中使用Jinja2可以使得我们可以在HTML页面中使用Python语言,显著增强了Web应用的灵活性和可扩展性。 安…

    Flask 2023年5月15日
    00
  • Flask 上传自定义头像的实例详解

    我们来详细讲解一下“Flask 上传自定义头像的实例详解”的完整攻略。 1. 确定需求 首先,我们需要明确我们的需求,即用户能够上传自己的头像,并在用户页面中显示。这个功能可以分为两个部分: 用户头像上传:用户需要有一个页面来上传头像,并把上传的头像保存在服务器上。 用户头像显示:用户上传了头像后,在用户页面中可以显示出来。 2. 创建Flask应用 在开始…

    Flask 2023年5月16日
    00
  • 详解Flask HTTP请求的4种方法

    Flask是一个轻量级Web应用程序框架,使用Python编写,可用于构建RESTful API。在Flask中,HTTP方法是实现RESTful API的重要组成部分。因此,在本文中,我们将深入探讨Flask中的HTTP方法,并提供代码示例。 Flask提供了以下HTTP方法: Flask GET方法 GET方法用于从服务器获取数据。它没有请求体,所有参数…

    Flask 2023年3月13日
    00
  • python http通信接口开发示例

    下面将详细讲解“python http通信接口开发示例”的完整攻略,包含两条示例说明。 示例一:Python实现简单的HTTP GET请求 1. 安装requests库 我们使用 requests 库来发送 http 请求。在 Windows 系统下,可以在命令行中执行以下命令安装: $ pip install requests 在 Linux 或 macO…

    Flask 2023年5月16日
    00
  • python实现查询IP地址所在地

    下面我来详细讲解一下“Python实现查询IP地址所在地”的完整攻略。主要分为以下几个步骤: 1. 确定数据来源 我们需要一个可以提供IP地址所在地数据的第三方数据源。常见的数据源有淘宝IP地址库、纯真IP地址库等。以淘宝IP地址库为例,在 https://ip.taobao.com/ 找到“API文档”,我们可以看到提供的查询API地址是: http://…

    Flask 2023年5月16日
    00
合作推广
合作推广
分享本页
返回顶部