Skip to content

Commit 59a1280

Browse files
committed
cache cardInfo calls so we don't flood the server
1 parent c8b4d03 commit 59a1280

1 file changed

Lines changed: 19 additions & 5 deletions

File tree

api/delayedcore.py

Lines changed: 19 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,9 @@
99
class DelayedCore(fut.Core):
1010
def __init__(self, email, passwd, secret_answer, platform='pc', code=None, emulate=None, debug=False, cookies=cookies_file):
1111
# Set initial delay
12-
self.delayInterval = 2
12+
self.delayInterval = 4
1313
self.delay = time()
14+
self.cardInfoCache = {}
1415
super(DelayedCore, self).__init__(email, passwd, secret_answer, platform, code, emulate, debug, cookies)
1516

1617
def setRequestDelay(self, delay):
@@ -41,15 +42,28 @@ def __request__(self, method, url, *args, **kwargs):
4142
return super(DelayedCore, self).__request__(method, url, *args, **kwargs)
4243

4344
def bid(self, trade_id, bid):
44-
# no delay between getting trade info and bidding
45+
# no delay between getting trade info and bidding, but still want a delay before both
46+
if self.delay > time():
47+
sleep(self.delay - time())
4548
delayInterval = self.delayInterval
4649
self.delayInterval = 0
4750
try:
4851
result = super(DelayedCore, self).bid(trade_id, bid)
4952
except fut.exceptions.PermissionDenied as e:
5053
if e.code == '461':
5154
result = False
52-
raise
53-
self.delayInterval = delayInterval
54-
self.delay = time() + (self.delayInterval * random.uniform(0.75, 1.25))
55+
else:
56+
raise
57+
finally:
58+
self.delayInterval = delayInterval
59+
self.delay = time() + (self.delayInterval * random.uniform(0.75, 1.25))
60+
return result
61+
62+
def cardInfo(self, resource_id):
63+
"""Returns card info."""
64+
if resource_id in self.cardInfoCache:
65+
result = self.cardInfoCache[resource_id]
66+
else:
67+
result = super(DelayedCore, self).cardInfo(resource_id)
68+
self.cardInfoCache[resource_id] = result
5569
return result

0 commit comments

Comments
 (0)