LKI / chinese-calendar

判断一天是不是法定节假日/法定工作日(查看节假日安排)
https://pypi.org/project/chinesecalendar/
MIT License
1.06k stars 185 forks source link

有什么热更新的方式吗? #42

Open aforwardz opened 5 years ago

aforwardz commented 5 years ago

在国务院发布假期更新的时候要重装吗?

LKI commented 5 years ago

唔,热更新的方式倒是没有。

不过这个提的倒是很好,我感觉可以提供一个 .json 文件,然后在必要的时候通过网络请求加载一次。

我回头实现一下。

aforwardz commented 5 years ago

那就需要服务器提供接口,可以有一个版本,然后本地设定特定时间版本check,不一致就更新

xojisi commented 5 years ago

emmm,所以这个实现了吗。

luzihang123 commented 4 years ago

思路: 一、使用此包做更新 step1.程序内,使用命令行更新 import os os.system("pip install --upgrade chinesecalendar")

step2.设置定时任务即可,每天跑一次,应对反法西斯70周年那种突然放假的可能😳

二、爬虫监控国务院网站,出现”假日安排“关键字,钉钉@开发者,及时向此项目提交PR或者手动生成数据😃 http://www.gov.cn/zhengce/zuixin.htm

保证假期服务及时可靠~

aforwardz commented 4 years ago

@luzihang123 Good Solution.

针对已启动的服务:

check_update_calendar.py

import requests
import chinese_calendar

def get_verisons(package_name):
    url = "https://pypi.python.org/pypi/%s/json" % package_name
    versions, success, count = [], False, 0
    while not success and count < 3:
        try:
            data = requests.get(url).json()
            versions = sorted(data["releases"].keys(), reverse=True)
            success = True
        except:
            count += 1

    return versions

if __name__ == '__main__':
    update = False
    versions = get_verisons('chinesecalendar')
    if versions and hasattr(chinese_calendar, '__version__'):
        if versions[0] != chinese_calendar.__version__:
            print('has_update')
        else:
            print('no_update')
    else:
        print('no_update')

check_update_calendar.sh

# activate your env

echo "------------Check Chinese Calendar Package Version------------"

result=`python check_update_calendar.py`

echo $result

if [ $result == "has_update" ]; then
    echo 'Update chinesecalendar'
    pip install --upgrade chinesecalendar
    # restart your service
fi

定时任务如crontab,加入 bash check_update_calendar.sh

建议作者 @LKI 下个版本加入 __version__ 常量,不然每次要手动加了:smile:

fhrl94 commented 4 years ago

更新之后解决不了动态依赖, 需要自己重启项目~各位注意呀

luzihang123 commented 4 years ago

更新之后解决不了动态依赖, 需要自己重启项目~各位注意呀

设计配置中心,从api或者redis拉取节假日数据,api或者redis的数据,你可以通过上述检查更新的方式更新

NateScarlet commented 4 years ago

不过这个提的倒是很好,我感觉可以提供一个 .json 文件,然后在必要的时候通过网络请求加载一次。

二、爬虫监控国务院网站,出现”假日安排“关键字,钉钉@开发者,及时向此项目提交PR或者手动生成数据😃

基于爬虫的数据可以用我的 holiday-cn

luzihang123 commented 4 years ago

不过这个提的倒是很好,我感觉可以提供一个 .json 文件,然后在必要的时候通过网络请求加载一次。

二、爬虫监控国务院网站,出现”假日安排“关键字,钉钉@开发者,及时向此项目提交PR或者手动生成数据😃

基于爬虫的数据可以用我的 holiday-cn

就怕公告文本格式不统一,解析繁杂且出错

NateScarlet commented 4 years ago

国家机关的公告格式基本固定的 而且解析出错CI会报错通知我

今年春节变更就是出错然后人工修的 CI 日志