python3 重复监听接口并更新下载文件

本文介绍了如何使用Python3的urllib库监听接口,当接收到新版本信息时,自动下载更新文件并执行shell脚本。通过threading.Timer实现定时任务,利用urllib.request.urlretrieve进行文件下载,并解决无content-length导致的下载进度异常问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

详细场景如下:定时监听接口,接口根据传来的version值与当前版本对比,如果版本号一致,则继续监听,否则下载更新并执行一个shell脚本。

主要使用了urllib库中request模块完成。

详细代码如下:

from threading import Timer
import urllib.request
import json
import os


def hello():
    print("hello hello")
    t = Timer(2, qaq)   # 八个小时为28800
    t.start()


def cbk(a, b, c):
    """回调函数
    @a:已经下载的数据块
    @b:数据块的大小
    @c:远程文件的大小
    """

    per = 100.0*a*b/c
    if per > 100:
        per = 100
    print('%.2f%%' % per)


def compare_version(data):
    url = 'http://www.flasktest.com/version'

    # response = urllib.request.Request(url)
    # html = urllib.request.urlopen(response)

    data_encode = urllib.parse.urlencode(data).encode('utf-8')
    response = urllib.request.Request(url, data_encode)  # 获取返回值
    html = urllib.request.urlopen(response)

    print(html.getcode())
    msg = html.read().decode()
    print(msg)
    msg = json.loads(msg)
    print(type(msg['version_now']))
    if msg['re
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值