Python requests表现得像有缓存一样

4
我正在尝试从我的网站上的XML页面获取一个颜色十六进制码,并在5-10秒内更新脚本。我能够很好地读取十六进制码,也能够很好地更改XML文件中的值,但是脚本需要一段时间才能反映出更新。
我想让脚本每5秒钟检查一次来自Web服务器的XML文件以进行更新,但实际上需要大约1分钟才能看到代码的更新。我的Python脚本是否缓存了XML文件?我的Web服务器可能会发送已缓存的版本吗?(在Chrome中查看XML文件可以立即刷新。)
Python代码:
import time
import serial
import requests
from bs4 import BeautifulSoup

ser = serial.Serial('/dev/ttyACM0',9600)
print('Connected to Arduino!')

while (True):
    print('Connecting to website...')

    page = requests.get('http://xanderluciano.com/pi/color.xml', timeout=5)
    soup = BeautifulSoup(page.text, 'html.parser')

    print('scraped hexcode: ' + soup.color.string)

    hex = soup.color.string
    ser.write(hex.encode('utf-8'))
    print(ser.readline())

    time.sleep(5);

XML文件:

<?xml version="1.0" encoding="UTF-8"?>
<ledstrip>
    <color>2196f3</color>
    <flash>false</flash>
    <freq>15</freq>
</ledstrip>

是的,5秒并不太短。该程序仅作为演示,每次运行仅持续5分钟,因此开销不会太大。 - Xander Luciano
你尝试过这个模块吗?https://pypi.python.org/pypi/requests-cache - Liam
1
假设您通过互联网访问xanderluciano.com,您的ISP是否有(隐形)缓存?您能否设置您的网站的缓存控制/到期返回头以指示这些XML文件不应被缓存? - DisappointedByUnaccountableMod
1
如果您控制服务器,请从Web服务器日志中检查请求是否到达服务器。 - Mikko Ohtamaa
Web服务器每隔大约3分钟才会看到一个新的Python请求。 - Xander Luciano
相关:requests-cache - tejasvi88
1个回答

0
解决方案是我的Web服务器使用NGINX作为服务器端缓存控制器,我选择在开发阶段禁用此缓存控制,以便能够立即看到结果。很可能有更好的推送数据方式,而不是不断轮询Web服务器获取数据。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接