Python:调用类的实例并传递给轮询函数

时间:2019-02-20 00:55:15

标签: python django api celery

我无法调用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)

0 个答案:

没有答案