Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
aforwardz opened this issue Apr 30, 2019 · 10 comments
Open

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

aforwardz opened this issue Apr 30, 2019 · 10 comments
Assignees

Comments

@aforwardz
Copy link

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

@LKI
Copy link
Owner

LKI commented Apr 30, 2019

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

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

我回头实现一下。

@LKI LKI self-assigned this Apr 30, 2019
@aforwardz
Copy link
Author

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

@xojisi
Copy link

xojisi commented Sep 25, 2019

emmm,所以这个实现了吗。

@luzihang123
Copy link
Contributor

luzihang123 commented Dec 12, 2019

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

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

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

保证假期服务及时可靠~

@aforwardz
Copy link
Author

@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
Copy link
Contributor

fhrl94 commented Dec 18, 2019

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

@luzihang123
Copy link
Contributor

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

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

@LKI LKI mentioned this issue Dec 30, 2019
@NateScarlet
Copy link

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

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

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

@luzihang123
Copy link
Contributor

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

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

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

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

@NateScarlet
Copy link

NateScarlet commented May 23, 2020

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

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

6 participants