问题描述
我正在尝试将我的电报机器人与我的网络摄像头 (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)