Python: вложенный цикл while внутри цикла for неожиданно прерывается без ошибок - PullRequest
0 голосов
/ 09 мая 2019

У меня есть цикл while, вложенный в цикл for, который работает над массивом json, собранным из firestore, который собирает биржевые символы для передачи другому API, чтобы собирать данные о каждой минуте торговли и помещать их обратно в базу данных firestore.

Пока я выполняю цикл, он неожиданно остановится безо всякой ошибки примерно в четвертый или шестой (никогда больше) промежуток времени при входе в цикл 389.

Есть идеи, почему это так? Это что-то с моим кодом? Я заметил, что если я изменил ограничение в цикле while с 389 до 100, оно работало во всех компаниях массива json. Но это не поможет многим четырем компаниям из списка, если будет полные 389 записей.

В любом случае, спасибо за помощь!

import requests
import json
import firebase_admin
from firebase_admin import credentials
from firebase_admin import firestore
import datetime

cred = credentials.Certificate("./serviceAccountKey.json")
firebase_admin.initialize_app(cred)

db = firestore.client()

doc_ref1 = db.collection(u'Quiver').stream()

for doc in doc_ref1:

    symbol = doc.id

    api_url = "https://api.iextrading.com/1.0/stock/{}/chart/1d".format(symbol)

    query_url = api_url

    r = requests.get(query_url)

    if r.status_code != 200: 
        print("Error:", r.status_code)
        continue

    if r.status_code == 404: 
        print("Error:", r.status_code, symbol)
        continue

    json_stock = r.json()

    b = 0

    while b <= 100:
        try:
            date = json_stock[b]['date']

            minute = json_stock[b]['minute']

            label = json_stock[b]['label']

            high = json_stock[b]['high']

            low = json_stock[b]['low']

            average = json_stock[b]['average']

            volume = json_stock[b]['volume']

            notional = json_stock[b]['notional']

            numberOfTrades = json_stock[b]['numberOfTrades']

            marketHigh = json_stock[b]['marketHigh']

            marketLow = json_stock[b]['marketLow']

            marketAverage = json_stock[b]['marketAverage']

            marketVolume = json_stock[b]['marketVolume']

            marketNotional = json_stock[b]['marketNotional']

            marketNumberOfTrades = json_stock[b]['marketNumberOfTrades']

            open = json_stock[b]['open']

            close = json_stock[b]['close']

            marketOpen = json_stock[b]['marketOpen']

            marketClose = json_stock[b]['marketClose']

            changeOverTime = json_stock[b]['changeOverTime']

            marketChangeOverTime = json_stock[b]['marketChangeOverTime']

            doc_ref = db.collection(u'dailies').document(u'{}-{}'.format(minute, symbol))

            doc_ref.set({
                u'date':u'{}'.format(date),
                u'minute':u'{}'.format(minute),
                u'label':u'{}'.format(label),
                u'high':u'{}'.format(high),
                u'average':u'{}'.format(average),
                u'notional':u'{}'.format(notional),
                u'number of trades':u'{}'.format(numberOfTrades),
                u'market high':u'{}'.format(marketHigh),
                u'market low':u'{}'.format(marketLow),
                u'market average':u'{}'.format(marketAverage),
                u'market volume':u'{}'.format(marketVolume),
                u'market notional':u'{}'.format(marketNotional),
                u'market number of trades':u'{}'.format(marketNumberOfTrades),
                u'open':u'{}'.format(open),
                u'close':u'{}'.format(close),
                u'market open':u'{}'.format(marketOpen),
                u'market close':u'{}'.format(marketClose),
                u'change over time':u'{}'.format(changeOverTime),
                u'market change over time':u'{}'.format(marketChangeOverTime)
            })

            print("{} {}:  {}".format(symbol, minute, b))

            b += 1

        except IndexError:
            print("Index Error")
            break

1 Ответ

0 голосов
/ 09 мая 2019

вы можете использовать:

except Exception as errmsg:
        print(errmsg)

и предоставьте больше информации

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...