fastApi 项目
2024-01-01 15:28:07
参考:
中文文档:FastAPI
API接口开发其实特简单,Python FastApi Web 框架教程来了_根据接口文档用fastapi开发接口-CSDN博客
Python框架篇(1):FastApi-快速入门 - 知乎
官方示例目录结构
.
├── app # 「app」是一个 Python 包
│ ├── __init__.py # 这个文件使「app」成为一个 Python 包
│ ├── main.py # 「main」模块,例如 import app.main
│ ├── dependencies.py # 「dependencies」模块,例如 import app.dependencies
│ └── routers # 「routers」是一个「Python 子包」
│ │ ├── __init__.py # 使「routers」成为一个「Python 子包」
│ │ ├── items.py # 「items」子模块,例如 import app.routers.items
│ │ └── users.py # 「users」子模块,例如 import app.routers.users
│ └── internal # 「internal」是一个「Python 子包」
│ ├── __init__.py # 使「internal」成为一个「Python 子包」
│ └── admin.py # 「admin」子模块,例如 import app.internal.admin
定时器任务
????????main.py
import time
from typing import Union
from apscheduler.schedulers.background import BackgroundScheduler
from fastapi import FastAPI
import uvicorn
from contextlib import asynccontextmanager
'''
启动命令
uvicorn main:app --reload --port 8000
#导出依赖
pip freeze >requirements.txt
api文档地址
http://localhost:8080/docs
'''
data_task = BackgroundScheduler()
task_id = 'data_task_1'
@asynccontextmanager
async def lifespan(app: FastAPI):
# 星期2——6 5:30 执行一次
# scheduler.add_job(func=task_function, trigger="cron", day_of_week='1,2,3,4,6', hour=5,minute=30)
data_task.add_job(func=task_function, trigger="interval", seconds=1,id=task_id)
data_task.start()
# print("启动前执行")
yield
# print("关闭后前执行")
app = FastAPI(lifespan=lifespan)
def task_function():
print(f"Current Time: {time.strftime('%Y-%m-%d %H:%M:%S', time.localtime())}")
@app.get("/scheduler/stop")
def stop():
data_task.pause_job(task_id)
print(task_id + ' is stop')
return task_id + ' is stop'
@app.get("/scheduler/start")
def start():
data_task.resume_job(task_id)
print(task_id + ' is start')
return task_id + ' is start'
# 第二种启动方式:
if __name__ == '__main__':
uvicorn.run(app="main:app", host="localhost", port=8000)
参考 :
APScheduler定时任务框架 - 星空看海 - 博客园
crontab 定时任务、Python 定时任务框架 apscheduler_crontab 定时 执行 python 脚本-CSDN博客
文章来源:https://blog.csdn.net/daizikui/article/details/135258421
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!