我无法调用APIClient
的类实例并返回已登录的对象并传递给celery任务进行长时间轮询。
除非设置了api客户端session_token
,否则我的任务将无法工作。每次调用APIClient
时,我都会创建一个新实例,随后将其登录到API。
问题是我将因为太多的登录尝试而被阻止。我需要返回APIClient
的已登录实例,可以用来轮询get_balance
函数。
这可以通过全局变量或实例变量来完成吗,以及如何传递给get_balance
?每6小时还要创建一个APIClient
的新“登录”实例的解决方案是什么?
from __future__ import absolute_import, unicode_literals
from matchbook import APIClient
from celery import shared_task
from .secrets import username, password
def get_client():
api = APIClient(username, password)
if api.session_token is None:
api.login()
session_token = api.session_token
user_id = api.user_id
api.set_session_token(session_token,user_id)
try:
api.account.get_account(True)
except:
session_token = None
return api
def set_client(api):
if api.session_token is not None:
print('session token set',api.session_token)
return api
@shared_task #runs every 5 seconds
def get_balance(api):
api = APIClient(username,password)
r = api.account.get_account(balance_only=True)
print(r)