微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何轮询不断更新的网页?

如何解决如何轮询不断更新的网页?

我正在尝试将我的电报机器人与我的网络摄像头 (DLINK DCS-942LB) 集成。

使用 NIPCA 标准(网络 IP 摄像机应用程序编程接口),我设法解决了所有问题。 我现在正在研究一种轮询机制。

基本应该是:

  • telegram bot 不断使用 http://CAMERA_IP:CAMERA_PORT/config/notify_stream.cgi 轮询摄像头
  • 当事件发生时,电报机器人会向用户发送通知

问题是: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 举报,一经查实,本站将立刻删除。