Plans from ₹99 a monthFree HTTPS on every site18% GST invoice with your GSTIN for input tax creditFull refund within 7 days of your first paymentPay yearly, get 2 months freeNo auto-renewal, everPlans from ₹99 a monthFree HTTPS on every site18% GST invoice with your GSTIN for input tax creditFull refund within 7 days of your first paymentPay yearly, get 2 months freeNo auto-renewal, ever

Troubleshooting

Fix a failing Python app

Read the logs, understand exit codes and fix the usual causes, from requirements.txt to memory and blocked connections.

Intermediate10 min readUpdated 27 October 2026
On this page

When a run shows failed, or a worker keeps stopping, the answer is almost always in the app's logs. This guide shows how to read them and lists the common causes with their fixes.

Before you start#

  • Open Python apps and find the app's card. Press the refresh button so the status and logs are current.
  • Open the Logs box. It shows the last 120 lines of output, with times.
  • For jobs, open Cron jobs too: Recent runs lists each run's result and exit code.

Read the logs in three steps#

  1. Find the last start. Look for the most recent line where the server starts your app (it names the app, for example Starting FiniteHost app price-bot).
  2. Read upwards from the bottom. A Python error ends with a Traceback block; the last line names the error, for example KeyError: 'sku'.
  3. Check the exit code under Last run. 0 is success; 1 is usually an uncaught Python exception or your own sys.exit(1); a run that was killed shows no normal exit.

requirements.txt did not install#

You see Installing requirements.txt followed by pip errors, and your own code never prints anything.

  • Typo or wrong version: ERROR: No matching distribution found for reqeusts. Fix the name or version.
  • Needs a compiler: errors mentioning gcc, Python.h or building wheel … failed. The sandbox has no build tools. Choose a version that ships a Linux wheel, or a pure-Python alternative.
  • Took too long: very large packages may not finish in the 15-minute start-up time. Trim what you install.

After fixing, upload the new requirements.txt. It is installed again because the file changed.

ModuleNotFoundError#

  • The package is missing from requirements.txt, or spelled differently from its import name (beautifulsoup4 installs bs4).
  • Your own module is not in the app folder: check the folder layout over SFTP. If the zip had two levels of folders, files may sit in /apps/price-bot/price-bot/.

FileNotFoundError#

  • Paths are relative to the app folder, which is the working directory. open("data/input.csv") reads /apps/price-bot/data/input.csv.
  • The Entry file name must match exactly, including case: Main.py and main.py differ.
  • Files written to /tmp are gone after the run. Keep files in the app folder.

The job stops after an hour#

Jobs are stopped after 1 hour and the run counts as failed. Make the job do less per run (for example process 1,000 items per run and remember where it stopped in a file), schedule it more often, or turn it into a worker.

A worker keeps restarting, then stops#

A worker that crashes is restarted after 5 seconds, then after longer waits up to 5 minutes. After 10 crashes within 10 minutes it is left stopped. The logs show the same traceback repeating. Fix the error, upload, and press Start.

Connection timed out or refused#

  • SMTP (sending email): only mail.finitehost.com on port 587 or 465 is reachable, signed in with a FiniteHost mailbox. Port 25 and other providers' SMTP servers time out. See Send email from your website or app.
  • FiniteHost's own servers and internal addresses are blocked.
  • localhost: only the database port 3306 is reachable. Apps cannot run their own web servers for the internet.
  • Other sites time out: check the URL works from your computer, and always set a timeout= on requests.

See What Python apps can and cannot do.

Killed: out of memory#

If the log shows the process was killed with no Python traceback (look for Killed or oom-kill), the app used more memory than your plan allows. Memory is shared with your websites' PHP. Read files line by line instead of all at once, process data in chunks, or upgrade.

The upload does not appear#

  • Wait a minute; uploads are copied to the app folder by the file server.
  • File names may only use letters, digits, dot, dash and underscore. my script.py (space) is refused.
  • A .zip must be a real zip archive. Links inside it and paths with .. are refused, and so is an archive with more than 5,000 files or 200 MB unpacked.
  • Up to 20 MB per upload in the panel. Use SFTP for bigger files.

Messages from the panel#

MessageMeaning
Run now is for jobs. Start a worker insteadThe app is a worker. Use Start.
This job is already queued or runningWait for the current run to finish.
Renew the plan to run appsThe plan is suspended. Renew first.
Upload a file up to 20 MBUse SFTP for big files.
… includes N app(s)All app slots are used.

What's next#

Was this helpful?

Still stuck?

Email support@finitehost.com with your subscription ID (it starts with t, shown on the panel's Dashboard) and what you tried. A person replies, usually within one business day.

Last updated 27 October 2026. Found something wrong? Tell support@finitehost.com.