【问题标题】:Python - Mailchimp Batch PUT requestsPython - Mailchimp 批量 PUT 请求
【发布时间】:2019-03-13 14:07:15
【问题描述】:

我正在尝试使用 Mailchimp API 的批处理功能。我现在的设置是这样的

operations = []
for idx, row in users_df.iterows():
    payload = {
        'email': row['email'],
        'last_updated': row['new_time'],
        'custom_value': row['new_value']
    }
    operation_item = {
        "method": "POST", # I changed this to PUT
        "path": '/lists/members/12345',
        "body": json.dumps(payload),
    }
    operations.append(operation_item)
client = mc.MailChimp(MAILCHIMP_TOKEN, MAILCHIMP_USER)
batch = client.batches.create(data={"operations": operations})

每当我使用 POST 方法时,我都会收到此错误:old_user@gmail.com is already a list member. Use PUT to insert or update list members.

但每当我将方法更改为 PUT 时,我都会收到另一个错误:The requested method and resource are not compatible. See the Allow header for this resource's available methods.

有没有办法克服这个问题?我已经看过thisthis 是Ruby 中的类似问题。

【问题讨论】:

    标签: python python-requests mailchimp


    【解决方案1】:

    您不能对列表资源"/lists/members/12345" 执行 PUT,您需要将路径更改为 "/lists/members/12345/{email}"

    此代码适用于我们:

    def add_users_to_mailchimp_list(list_id, users):
    operations = []
    client = get_mailchimp_client()
    
    for user in users:
        member = {
            'email_address': user.email,
            'status_if_new': 'subscribed',
            'merge_fields': {
                'FNAME': user.first_name or '',
                'LNAME': user.last_name or '',
            },
        }
        operation_item = {
            "method": "PUT",
            "path": client.lists.members._build_path(list_id, 'members', user.email),
            "body": json.dumps(member),
        }
        operations.append(operation_item)
    return client.batches.create(data={"operations": operations})
    

    使用受保护的方法client.lists.members._build_path 我想有点hacky,如果你喜欢你可以手动构建url,它将是f'lists/{list_id}/members/{user.email}'

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-12-18
      • 2023-04-02
      • 1970-01-01
      • 2015-11-24
      • 2018-02-14
      • 2020-03-04
      • 1970-01-01
      相关资源
      最近更新 更多