Facebook Ads Python:如何访问返回的HTTP标头?

问题描述 投票:4回答:2

我想获得我的facebook广告应用的负载限制。我正在使用facebook广告python库。根据docs,HTTP响应包含X-FB-Ads-Insights-Throttle标头。我该如何访问它?

python facebook facebook-ads-api
2个回答
3
投票

使用python库,它将不容易获得。 HTTP请求/响应被包装在库中以仅暴露最小和必要的数据。

如果您正在查找实际答案,请查看facebookads库源代码,并查找创建FacebookResponse对象的时间。例如,api.py是一个执行此操作的文件。 FacebookResponse对象包含header属性,该属性将包含X-FB-Ads-Insights-Throttle字段。

如果您没有侵入facebookads库源代码,可以使用python“Requests”库来发出http请求,此库中的响应对象将包含您关注的header属性。


1
投票
import logging
import requests as rq

#Function to find the string between two strings or characters
def find_between( s, first, last ):
    try:
        start = s.index( first ) + len( first )
        end = s.index( last, start )
        return s[start:end]
    except ValueError:
        return ""

#Function to check how close you are to the FB Rate Limit
def check_limit():
    check=rq.get('https://graph.facebook.com/v3.1/act_'+account_number+'/insights?access_token='+my_access_token)
    usage=float(find_between(check.headers['x-ad-account-usage'],':','}'))
    return usage

#Check if you reached 75% of the limit, if yes then back-off for 5 minutes (put this chunk in your loop, every 200-500 iterations)
if (check_limit()>75):
    print('75% Rate Limit Reached. Cooling Time 5 Minutes.')
    logging.debug('75% Rate Limit Reached. Cooling Time 5 Minutes.')
    time.sleep(300)
© www.soinside.com 2019 - 2024. All rights reserved.