Sanic搭建WEB服务

171 阅读1分钟

背景

我需要做一个web服务给其他项目提供一个休息日判断的接口(跳过节假日),这个需求看似简单实则Java的第三方依赖库已经gg了而python依然坚挺,在这里给python点赞!

以下是实现服务的步骤

  1. 通过pip安装snic和chinese-calendar依赖
pip install sanic chinese-calendar
  1. 业务代码如下,实现了一个/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)
  1. PyCharm运行代码
  2. 访问http://localhost:8000/api/getHoliday?date=2024-10-01 来测试接口

以下是服务器部署接口

注:这里省略掉了安装python环境等流程,请自行脑补

  1. 安装Sanic
pip install sanic
  1. 将代码文件文件上传至服务器
  2. 安装GunIcorn作为WSGI服务器
pip install gunicorn
  1. 到代码存放目录下启动服务
gunicorn 模块名:应用名 --bind 0.0.0.0:1337 --worker-class sanic.worker.GunicornWorker
  1. 验证访问http://ip:8000/api/getHoliday?date=2024-10-01测试服务器接口