Я выполняю все oop запросов API (30 запросов каждую минуту). Данные возвращаются в формате JSON, который я преобразую в базу данных pandas (я идентифицирую столбцы и объединяю их). Иногда я получаю сообщение об ошибке ниже на одном из моих запросов, которое (автоматически) останавливает выполнение скрипта.
Есть ли способ указать Python просто пропустить эту ошибку и продолжить l oop?
Я не возражаю против того, чтобы не получать и не обрабатывать данные из этого одного ошибочного запроса.
Если это не так просто, есть хотя бы способ получить звуковое уведомление (звуковой сигнал) чтобы я знал об этом и мог снова запустить скрипт вручную?
Traceback (most recent call last):
File "Skript.py", line 19, in <module>
dfraw = pd.concat([pd.DataFrame({k: v}) for k, v in dataAPI.json().items() if k in columns], axis=1)
File "C:\Users\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.8_qbz5n2kfra8p0\LocalCache\local-packages\Python38\site-packages\requests\models
.py", line 898, in json
File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.8_3.8.752.0_x64__qbz5n2kfra8p0\lib\json\__init__.py", line 357, in loads
return _default_decoder.decode(s)
File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.8_3.8.752.0_x64__qbz5n2kfra8p0\lib\json\decoder.py", line 337, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.8_3.8.752.0_x64__qbz5n2kfra8p0\lib\json\decoder.py", line 355, in raw_decode
raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
Вот код:
import pandas as pd
from pathlib import Path
import time
import datetime
import requests
while True:
start = time.process_time()
starttime = time.time()
list_of_underlyings = ['X','Y','Z',...]
for i in list_of_underlyings:
url = ("https:xyzxyz?symbol=" + i + "&resolution=1&count=50&format=json")
dataAPI = requests.get(url)
columns = {'c', 'h', 'l', 'o', 't' , 'v'}
dfraw = pd.concat([pd.DataFrame({k: v}) for k, v in dataAPI.json().items() if k in columns], axis=1)
df = dfraw.reindex(columns = ['o', 'h', 'l', 'c', 'v' , 't'])
time.sleep(60.0 - ((time.time() - starttime) % 60.0))