разделитель запросов препятствует правильному ответу сервера - PullRequest
0 голосов
/ 22 ноября 2018

Я хотел получить некоторые исторические данные с фондовой биржи для моей программы.У меня был старый код из другой программы, которая сделала это и отправила данные в файл Excel.После небольшого изменения (старый код никогда не использовал 'return') я получил работающий код.

Но есть загвоздка, сервер ответит только на мой запрос, если ответ не превышает 300 свечей.Поэтому я использовал «разделитель запросов» из моего старого кода, сделал небольшие изменения (опять же, старый код не использовал «return») и понял, что он не работает.

Я предполагаю, что вся моя проблема заключается в том, что я сейчас использую оператор return вместо вызова функции из функции, как это делал ранее id.Но я не настолько опытен в программировании, чтобы знать это наверняка.

Может кто-нибудь указать на ошибки, которые я сделал здесь, чтобы я не повторял их в будущем.

Вот рабочий пример кода программы:

import time
import datetime
import json
import urllib3
import urllib.request
import requests
class Requester():
    def __init__(self, url='https://api.pro.coinbase.com', timeout=30, produkty='BTC-EUR', start=None, end=None, skala=None, bd_bot=None ):
    self.url = url.rstrip('/')
    self.auth = None
    self.session = requests.Session()
    self.timeout = timeout
    self.produkty= produkty

    def _Request(self, method ,endpoint, params=None, data=None):
        url=self.url+endpoint
        r=self.session.request(method, url, params=params, data=data, auth=self.auth, timeout=30)
        return r.json()
    def Historic_rates_divider(self, start, end, skala, produkt):
        if (int(end)-int(start)) > (300*int(skala)):
            end_tmp=end
            end=start+(300*skala)
            Req.Historic_rates(start, end, skala, produkt)
            while end < end_tmp:
                start=end
                end=start+(300*skala)
                Req.Historic_rates(start, end, skala, produkt)
            else:
                end=end_tmp
                Req.Historic_rates(start, end, skala, produkt)
        else:
            Req.Historic_rates(start, end, skala, produkt)
    def Historic_rates(self, start, end, skala, produkt):
        parametry={}
        start=datetime.datetime.fromtimestamp(start).isoformat()
        end=datetime.datetime.fromtimestamp(end).isoformat()
        print(start, end)
        if start is not None:
            parametry['start'] = start
        if end is not None:
            parametry['end'] = end
        if skala is not None:
            dozwolona_skala=[60, 300, 900, 3600, 21600, 86400]
            if skala not in dozwolona_skala:
                nowa_skala = min(dozwolona_skala, key=lambda x:abs(x-skala))
                print('{} Wartosc {} dla skali niedozwolona, uzyto wartosci {}'.format(time.ctime(), skala, nowa_skala))
                skala = nowa_skala
            parametry['granularity']= skala
        print(parametry)
        return self._Request('GET','/products/{}/candles'.format(str(produkt)), params=parametry)

start=1542807000
print(start)
end=1542853400
print(end)
Req=Requester()
z=Req.Historic_rates(start, end, skala=900, produkt='BTC-EUR')
print(z)
print('\n')
z=Req.Historic_rates_divider(start, end, skala=900, produkt='BTC-EUR')
print(z)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...