如何解决如何轮询不断更新的网页?
我正在尝试将我的电报机器人与我的网络摄像头 (DLINK DCS-942LB) 集成。
使用 NIPCA 标准(网络 IP 摄像机应用程序编程接口),我设法解决了所有问题。 我现在正在研究一种轮询机制。
基本应该是:
问题是:notify_stream.cgi 页面每 1 秒不断更新添加事件。
我无法轮询 notify_stream.cgi,因为我有请求挂起(没有得到响应):
这可以用一个简单的脚本重现:
import requests
myurl = "http://CAMERA_IP:CAMERA_PORT/config/notify_stream.cgi"
response = requests.get(myurl,auth=("USERNAME","PASSWORD"))
这会导致请求挂起,直到我手动停止。
是否可以继续监听 notify_stream.cgi 并将新行传递给函数?
解决方法
感谢收到的评论,使用 session 和 strem 工作正常。 代码如下:
import requests
def getwebcameventstream(webcam_url,webcam_username,webcam_password):
requestsession = requests.Session()
eventhandler = ["first_evet","second_event","third_event"]
with requestsession.get(webcam_url,auth=(webcam_username,webcam_password),stream=True) as webcam_response:
for event in webcam_response.iter_lines():
if event in eventhandler:
handlewebcamalarm(event)
def getwebcameventstream(event):
print ("New event received :" + str(event))
url = 'http://CAMERA_IP:CAMERA_PORT/config/notify_stream.cgi'
username="myusername"
password="mypassword"
getwebcamstream(url,username,password)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。