1

我一直在寻找一种从 github 存储库 README 文件和 facebook 提供的文档中的 facebook 库进行异步批处理调用的方法。我遇到的问题是我想创建一个广告集的副本。这样做的适当调用非常简单,因为我将在以下代码中显示:

api = FacebookAdsApi.init([APP_ID],[APP_SECRET],[ACCESS_TOKEN])
parameters = {...}
ad_set = AdSet([id])
ad_set.create_copy(fields,parameters)

这很简单并且有效,但由于我想复制所有子对象,它仅在有三个或更少的子对象时才有效。之后它显示以下错误:

`The number of ad objects you are trying to copy at this time is too large. The total number of ads, ad sets, and campaigns to copy at once must be fewer than 3. If you are using regular API mode, please consider calling the API in the async batch so that it can copy many more ad objects, https://developers.facebook.com/docs/graph-api/asynchronous-batch-requests.`

在文档中,它告诉您如何为异步批处理发出 http 请求。但我想知道的是,是否有办法从 facebook-business-sdk 进行异步批量调用以及如何进行。我现在将向您展示我正在使用批处理的代码,但是由于它们不是异步的,因此它们仍然只能在少于 3 个孩子的情况下工作。

api = FacebookAdsApi.init([APP_ID],[APP_SECRET],[ACCESS_TOKEN])
parameters = {...}
ad_set = AdSet([id])
api_batch = api.new_batch()
ad_set.create_copy(fields,parameters,batch=api_batch)
api_batch.execute()
4

1 回答 1

1

这是 Python 3.7 Facebook SDK API v7.0 的片段

from facebook_business import FacebookSession
from facebook_business.api import FacebookAdsApi
from facebook_business.adobjects.adset import AdSet

session = FacebookSession('APP_ID','APP_SECRET','ACCESS_TOKEN')
api = FacebookAdsApi(session)
FacebookAdsApi.set_default_api(api)
    
api_batch = api.new_batch()

adSet = AdSet(dataset_id)

copy_params = {
      "deep_copy":True,
       "status_option": 'PAUSED'
    }
async_job = adSet.create_copy(
    params = copy_params,
    batch=api_batch
  )
api_batch.execute()

print(api.get_num_requests_succeeded())
于 2021-01-19T17:37:39.287 回答