Have your say in Community Polls: What was/is your greatest motivation to start your own business?
Our Partner & Developer boards on the community are moving to a brand new home: the .dev community forums! While you can still access past discussions here, for all your future app and storefront building questions, head over to the new forums.

Timeout on updating product along with variant

Solved

Timeout on updating product along with variant

perssson
Tourist
6 1 0

Hello. I'm experiencing something very weird, when i try to update a product. 
This is a code snippet:

 

 

 

async put(obj) {
        try {
            const api = this.getApi(obj.webshop);
            if (obj.path.includes('products')) {
                console.time('Time to update product');
                delete obj.data.product.variants;
            }
            const res = await api.put(obj);
            return res;
        } catch (e) {
            if (e.retryAfter) {
                await new Promise((resolve) => setTimeout(resolve, 1000));
                return this.put(obj);
            }
            throw e;
        } finally {
            if (obj.path.includes('products')) {
                console.timeEnd('Time to update product');
            }
            console.log('\n');
        }
    }

 

 

 

Where api is an instance of `Shopify.Clients.Rest`

If i include the Variant in the product, my request times out after roughly 80 seconds. However this is not a "normal" timeout, because it fails with an error saying "'Failed to make Shopify HTTP request: FetchError: invalid json response body at https://anotherslegacy.myshopify.com/admin/api/unstable/products/xxxxx.json reason: Unexpected token < in JSON at position 0'", but I'm describing it as a timeout, because it always happens after 80-
85 seconds. What I also think is weird is that it seems to be using an "unstable" version..

However it becomes really interesting if i delete variants. ` delete obj.data.product.variants;`Then I can complete al requests within 0.5 - 2 seconds.

 

It clearly shows in the documentation, that you can update a variant along with a product (https://shopify.dev/api/admin-rest/2022-01/resources/product#put-products-product-id - under "update a product and one of its variants)). And I'm not sending that much data. This is an example of the request:

  product: {
    body_html: "<p style=\"margin-top:1em\"><strong>Guld Ring i 14 karat</strong></p><p style=\"margin-top:1em\">Vægt: 4.25 gram<br>Stand: Som ses på billeder, god stand med almindelige brugsspor og slidtage</p><p style=\"margin-top:1em\"><strong>Hos anotherslegacy.dk får du:</strong><br>✓ Gratis fragt på alle produkter<br>✓ Pakken sendes inden for 1-2 dage<br>✓ Din pakke er forsikret under transport<br>✓ 14 dages guld bytte- og returret</p><p style=\"margin-top:1em\"><strong>Hos anotherslegacy har vi høje standarder, til de produkter vi sælger:</strong><br>• Alle produkter er blevet ultralydsrenset<br>• Alle produkter er gennemgået for fejl og mangler<br>• Alle produkter har fået en lødighedstest i røntgen maskine. Vi sælger IKKE forgyldte genstande</p><p style=\"margin-top:1em\"><strong>Mulighed for rentefri afdragsordning med Anyday:</strong><br>• Afdrag over 4 måneder<br>• Ingen skjulte gebyrer eller renter<br>Vælg Anyday under ”Betaling” når du køber smykket - Det tager 2 minutter at blive godkendt</p><p style=\"margin-top:1em\"><strong>Betal kontant:</strong><br>Vi tager imod op til 19.999 kroner kontant. Book en fremvisning i dag.</p><p style=\"margin-top:1em\"><strong>Butik:</strong><br>Store Kongensgade 68 kl th, 1264 København K<br>Mandag-Torsdag: 09:00-18.00<br>Fredag 09:00-17:00</p>",
    handle: "GG4876",
    id: 7608380522724,
    product_type: "Ring",
    published: true,
    status: "active",
    tags: "Ring, Anden type, Hvidguld, Kvinde, 14 karat, Diamantsmykke",
    title: "Ring i 14 karat str. 61",
    variants: [
      {
        sku: "GG4876",
        price: 1999,
        title: "Default Title",
        weight: 4.25,
        barcode: "",
        taxable: true,
        position: 1,
        compare_at_price: null,
        inventory_policy: "deny",
        requires_shipping: true,
        fulfillment_service: "manual",
        inventory_management: "shopify",
        inventory_quantity: 1,
      },
    ],
    vendor: "Andet",
    webshop: "anotherslegacy",
    cost_per_item: 914,
    location: 67738140900,
  },
}


Does anyone know how to solve this?

 

Accepted Solution (1)

perssson
Tourist
6 1 0

This is an accepted solution.

I just noticed that for whatever reason, I don't have the variants ID. I will try to include that and get back.

View solution in original post

Replies 2 (2)

perssson
Tourist
6 1 0

This is an accepted solution.

I just noticed that for whatever reason, I don't have the variants ID. I will try to include that and get back.

perssson
Tourist
6 1 0

That solved it...