Question

Error deploying Functions due to timeout

Hello all. I’m deploying serverless Functions from my local machine using doctl. Most of the times, it finishes deployment without a problem. Sometimes, I am getting an error on an arbitrary Function like this:

Error: While deploying action 'app/transcribe' (running remote build): The function exceeded its time limits of 120000 milliseconds.

While I do have timeout limits defined for every Function in the project.yml file, I understand these definitions apply to runtime, not deployment, of the Function, and my timeout figures are different anyway.

I think I never had these errors when I had just a couple of Functions. However, since my 6th or 7th Function it started to appear. I’m concerned I will always fail deployment soon as more Functions are added…

So, I’d like to better understand where is that deployment timeout definition coming from, do I have control over it, and why would it sometimes work and sometimes timeout?


Submit an answer


This textbox defaults to using Markdown to format your answer.

You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!

Sign In or Sign Up to Answer

These answers are provided by our Community. If you find them useful, show some love by clicking the heart. If you run into issues leave a comment, or add your own answer to help others.

Bobby Iliev
Site Moderator
Site Moderator badge
March 13, 2024

Hey!

As you’ve correctly noted, the timeout settings in your project.yml file are for runtime execution, not for the build time for remote builds. The build time limit for remote builds is different from the timeout configuration in your project yaml.

According to the Serverless functions limitations docs page, the maximum build time for remote builds is 2 minutes, which matches the error that you are seeing (120000 milliseconds is 2 minutes):

https://docs.digitalocean.com/products/functions/details/limits/

When you had fewer functions, you might not have hit resource or concurrency limits that are now being reached with more functions. This can cause deployments to take longer and potentially time out.

One option here is to try using the watch command instead of the deploy command:

doctl serverless watch . --remote-build

It will run until interrupted. It will watch the directory (which should be one you initialized for serverless development) and will deploy the contents to the cloud incrementally as it detects changes.

You need to run the command in a separate window and leave it running.

Let me know how it goes!

Best,

Bobby

Try DigitalOcean for free

Click below to sign up and get $200 of credit to try our products over 60 days!

Sign up

Become a contributor for community

Get paid to write technical tutorials and select a tech-focused charity to receive a matching donation.

DigitalOcean Documentation

Full documentation for every DigitalOcean product.

Resources for startups and SMBs

The Wave has everything you need to know about building a business, from raising funding to marketing your product.

Get our newsletter

Stay up to date by signing up for DigitalOcean’s Infrastructure as a Newsletter.

New accounts only. By submitting your email you agree to our Privacy Policy

The developer cloud

Scale up as you grow — whether you're running one virtual machine or ten thousand.

Get started for free

Sign up and get $200 in credit for your first 60 days with DigitalOcean.*

*This promotional offer applies to new accounts only.