背景
我需要做一个web服务给其他项目提供一个休息日判断的接口(跳过节假日),这个需求看似简单实则Java的第三方依赖库已经gg了而python依然坚挺,在这里给python点赞!
以下是实现服务的步骤
- 通过pip安装snic和chinese-calendar依赖
pip install sanic chinese-calendar
- 业务代码如下,实现了一个/api/getHoliday接口,应用名称为holidayApp,模块名为文件名可自行设置
from sanic import Sanic
from sanic.response import json
from chinese_calendar import is_workday, is_holiday
from datetime import datetime
holidayApp = Sanic("HolidayChecker")
@holidayApp.route("/api/getHoliday", methods=["GET"])
async def get_holiday(request):
# 获取查询参数中的日期
date_str = request.args.get("date")
if not date_str:
return json({"error": "Missing 'date' parameter"})
try:
# 将字符串日期转换为datetime对象
date = datetime.strptime(date_str, "%Y-%m-%d").date()
except ValueError:
return json({"error": "Invalid date format. Please use 'YYYY-MM-DD'"})
# 使用chinese-calendar库判断是否是休息日
res = 1;
if is_holiday(date):
res=3;
return json({"data": res})
if __name__ == "__main__":
holidayApp.run(host="0.0.0.0", port=8000)
- PyCharm运行代码
- 访问
http://localhost:8000/api/getHoliday?date=2024-10-01来测试接口
以下是服务器部署接口
注:这里省略掉了安装python环境等流程,请自行脑补
- 安装Sanic
pip install sanic
- 将代码文件文件上传至服务器
- 安装GunIcorn作为WSGI服务器
pip install gunicorn
- 到代码存放目录下启动服务
gunicorn 模块名:应用名 --bind 0.0.0.0:1337 --worker-class sanic.worker.GunicornWorker