request divider prevents the server from proper response












0














I wanted to pull some historic data from a stock exchange for my program. I had an old peace of code from another program that did just that and push the data to a excel file. After coping with slight modifications (the old code never used 'return')I got the code working.



But there is a catch, the server will only respond to my query, if the answer is no longer than 300 candles. So I used a "request divider" from my old code made slight modifications (again old code didn't use 'return') and realized it didn't work.



I'm assuming my whole problem lays in the fact I'm now using the return statement instead of calling a function from a function like id did before.
But I'm not that experienced with programming to know that for sure.



Can someone point out the mistakes i made here so i don't repeat them in the future.



Here is a working sample code of the program:



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)









share|improve this question



























    0














    I wanted to pull some historic data from a stock exchange for my program. I had an old peace of code from another program that did just that and push the data to a excel file. After coping with slight modifications (the old code never used 'return')I got the code working.



    But there is a catch, the server will only respond to my query, if the answer is no longer than 300 candles. So I used a "request divider" from my old code made slight modifications (again old code didn't use 'return') and realized it didn't work.



    I'm assuming my whole problem lays in the fact I'm now using the return statement instead of calling a function from a function like id did before.
    But I'm not that experienced with programming to know that for sure.



    Can someone point out the mistakes i made here so i don't repeat them in the future.



    Here is a working sample code of the program:



    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)









    share|improve this question

























      0












      0








      0







      I wanted to pull some historic data from a stock exchange for my program. I had an old peace of code from another program that did just that and push the data to a excel file. After coping with slight modifications (the old code never used 'return')I got the code working.



      But there is a catch, the server will only respond to my query, if the answer is no longer than 300 candles. So I used a "request divider" from my old code made slight modifications (again old code didn't use 'return') and realized it didn't work.



      I'm assuming my whole problem lays in the fact I'm now using the return statement instead of calling a function from a function like id did before.
      But I'm not that experienced with programming to know that for sure.



      Can someone point out the mistakes i made here so i don't repeat them in the future.



      Here is a working sample code of the program:



      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)









      share|improve this question













      I wanted to pull some historic data from a stock exchange for my program. I had an old peace of code from another program that did just that and push the data to a excel file. After coping with slight modifications (the old code never used 'return')I got the code working.



      But there is a catch, the server will only respond to my query, if the answer is no longer than 300 candles. So I used a "request divider" from my old code made slight modifications (again old code didn't use 'return') and realized it didn't work.



      I'm assuming my whole problem lays in the fact I'm now using the return statement instead of calling a function from a function like id did before.
      But I'm not that experienced with programming to know that for sure.



      Can someone point out the mistakes i made here so i don't repeat them in the future.



      Here is a working sample code of the program:



      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)






      python if-statement while-loop request return






      share|improve this question













      share|improve this question











      share|improve this question




      share|improve this question










      asked Nov 22 at 18:38









      TRV

      319




      319





























          active

          oldest

          votes











          Your Answer






          StackExchange.ifUsing("editor", function () {
          StackExchange.using("externalEditor", function () {
          StackExchange.using("snippets", function () {
          StackExchange.snippets.init();
          });
          });
          }, "code-snippets");

          StackExchange.ready(function() {
          var channelOptions = {
          tags: "".split(" "),
          id: "1"
          };
          initTagRenderer("".split(" "), "".split(" "), channelOptions);

          StackExchange.using("externalEditor", function() {
          // Have to fire editor after snippets, if snippets enabled
          if (StackExchange.settings.snippets.snippetsEnabled) {
          StackExchange.using("snippets", function() {
          createEditor();
          });
          }
          else {
          createEditor();
          }
          });

          function createEditor() {
          StackExchange.prepareEditor({
          heartbeatType: 'answer',
          autoActivateHeartbeat: false,
          convertImagesToLinks: true,
          noModals: true,
          showLowRepImageUploadWarning: true,
          reputationToPostImages: 10,
          bindNavPrevention: true,
          postfix: "",
          imageUploader: {
          brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
          contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
          allowUrls: true
          },
          onDemand: true,
          discardSelector: ".discard-answer"
          ,immediatelyShowMarkdownHelp:true
          });


          }
          });














          draft saved

          draft discarded


















          StackExchange.ready(
          function () {
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53436589%2frequest-divider-prevents-the-server-from-proper-response%23new-answer', 'question_page');
          }
          );

          Post as a guest















          Required, but never shown






























          active

          oldest

          votes













          active

          oldest

          votes









          active

          oldest

          votes






          active

          oldest

          votes
















          draft saved

          draft discarded




















































          Thanks for contributing an answer to Stack Overflow!


          • Please be sure to answer the question. Provide details and share your research!

          But avoid



          • Asking for help, clarification, or responding to other answers.

          • Making statements based on opinion; back them up with references or personal experience.


          To learn more, see our tips on writing great answers.





          Some of your past answers have not been well-received, and you're in danger of being blocked from answering.


          Please pay close attention to the following guidance:


          • Please be sure to answer the question. Provide details and share your research!

          But avoid



          • Asking for help, clarification, or responding to other answers.

          • Making statements based on opinion; back them up with references or personal experience.


          To learn more, see our tips on writing great answers.




          draft saved


          draft discarded














          StackExchange.ready(
          function () {
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53436589%2frequest-divider-prevents-the-server-from-proper-response%23new-answer', 'question_page');
          }
          );

          Post as a guest















          Required, but never shown





















































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown

































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown







          Popular posts from this blog

          Trompette piccolo

          Slow SSRS Report in dynamic grouping and multiple parameters

          Simon Yates (cyclisme)