request divider prevents the server from proper response
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
add a comment |
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
add a comment |
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
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
python if-statement while-loop request return
asked Nov 22 at 18:38
TRV
319
319
add a comment |
add a comment |
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
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
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
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.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
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
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
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