为特定的 json 元素轮询 python 中的 api

Polling an api in python for a specific json element

我正在请求来自 api 的数据,响应为 json。 json 内容一直在动态变化。我希望我的 python 脚本连续 运行 并查看 json 例如每 5 秒,直到给定的语句为真,这可能是给定的用户 ID 号出现在json 响应。 当存在用户 ID 号时,然后执行操作,例如打印用户 ID 和连接的用户名也在 json 响应中找到。

我一直在查看 polling documentation,但我不知道如何按照我想要的方式使用它。

我不想每 5 秒轮询 data['result']['page']['list'] ['user_id'],当 ['user_id'] 为真时,然后打印连接到 user_id 的信息,例如 nick_name.

response = requests.post('https://website.com/api', headers=headers, data=data)

json_data = json.dumps(response.json(), indent=2)
data = json.loads(json_data)

userid = input('Input userID: ')


for ps in data['result']['page']['list']:
    if userid == str(ps['user_id']):
        print('Username: ' + ps['nick_name'])
        print('UserID: ' + str(ps['user_id']))

简单的循环怎么样?

import time
found_occurrence = False
userid = input('Input userID: ')

while not found_occurrence:
 response = requests.post('https://website.com/api', headers=headers, data=data)
 json_res = response.json()
 for ps in json_res['result']['page']['list']:
    if userid == str(ps['user_id']):
        print('Username: ' + ps['nick_name'])
        print('UserID: ' + str(ps['user_id']))
        found_occurrence = True
 time.sleep(5)

如果你想要这个 运行 连续,你将无限循环(直到中断)并将事件记录到这样的文件中:

import logging
import time
import sys
logging.basicConfig(filename='app.log', filemode='w', format='%(name)s - %(levelname)s - %(message)s')

userid = input('Input userID: ')
try: 
    while True:
     response = requests.post('https://website.com/api', headers=headers, data=data)
     json_res = response.json()
     for ps in json_res['result']['page']['list']:
        if userid == str(ps['user_id']):
           logging.info('Username: ' + ps['nick_name'])
           logging.info('UserID: ' + str(ps['user_id']))
     time.sleep(5)
except KeyboardInterrupt:
  logging.info("exiting")
  sys.exit()