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.
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#
- 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).
- Read upwards from the bottom. A Python error ends with a
Tracebackblock; the last line names the error, for exampleKeyError: 'sku'. - Check the exit code under Last run.
0is success;1is usually an uncaught Python exception or your ownsys.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.horbuilding 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 (beautifulsoup4installsbs4). - 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.pyandmain.pydiffer. - Files written to
/tmpare 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.comon 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
.zipmust 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#
| Message | Meaning |
|---|---|
| Run now is for jobs. Start a worker instead | The app is a worker. Use Start. |
| This job is already queued or running | Wait for the current run to finish. |
| Renew the plan to run apps | The plan is suspended. Renew first. |
| Upload a file up to 20 MB | Use 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.