# How to Monitor PythonAnywhere Uptime

> PythonAnywhere is a cloud platform for hosting Python web apps, scheduled tasks, and always-on processes directly in the browser, popular with Django and Flask developers, data scientists, and learners who want hosting without managing a server.

*Source: https://monitoristic.com/monitor/pythonanywhere*

---

## Why Monitor PythonAnywhere?

PythonAnywhere makes it easy to put a Python web app online, but 'online' is not the same as 'working'. Free apps are disabled if you don't click to renew them every few months, scheduled tasks can silently stop, and your web app can return a 502 when a worker crashes or you hit a CPU-seconds or resource limit. None of that triggers a notification from PythonAnywhere. If your Django or Flask app is the backend for something people depend on, an external monitor is the only thing that tells you it stopped responding — before your users do.

## What to Monitor

- `yourusername.pythonanywhere.com` — Your web app's main URL — catches 502s, crashed workers, and disabled free apps
- `yourusername.pythonanywhere.com/health` — A lightweight health endpoint that confirms the app and its database are actually responding
- `yourcustomdomain.com` — Your custom domain, if mapped — catches SSL and domain-mapping failures separately from the app

## What You Should Actually Do

1. Monitor your live app URL (yourusername.pythonanywhere.com) and confirm a 200 response — not just that the host pings — so 502s and crashed workers are caught
2. If you're on the free tier, set a calendar reminder to renew before expiry, and let a monitor be your backstop if you miss it
3. Add a dedicated /health endpoint that touches your database, so 'app up but DB down' is detected
4. Monitor your custom domain separately if you've mapped one, to catch SSL and domain-mapping issues
5. Watch response times — PythonAnywhere apps slow down as they approach CPU-seconds and resource limits, often before they fail outright

## PythonAnywhere's Official Status Page

PythonAnywhere publishes real-time status at https://status.pythonanywhere.com. Your own monitor complements it by catching connection-level issues, often before the status page updates.

## Takeaway

PythonAnywhere is one of the friendliest ways to get a Python app online, but it gives you almost no signal when that app stops working — a disabled free app, a crashed worker, or a hit resource limit all happen quietly. An external uptime monitor that checks for a real response is what turns 'I found out from an angry user' into 'I was alerted in 60 seconds'.

## Frequently Asked Questions

### Does PythonAnywhere alert me if my app goes down?

No. PythonAnywhere does not send you a notification when your specific web app returns errors or is disabled. Its status page covers platform-wide incidents only, so catching your own app's downtime requires an external monitor.

### Why did my PythonAnywhere app stop working on its own?

Common causes are a free app being disabled because it wasn't renewed, a crashed worker returning 502s, hitting your CPU-seconds or resource quota, or a database connection failure. Most of these happen with no notification, which is why external monitoring matters.

### What should I monitor on PythonAnywhere?

Monitor your live app URL for a real 200 response, and ideally add a /health endpoint that exercises your database. If you use a custom domain, monitor it separately so SSL and domain-mapping problems are caught on their own.

### How is this different from status.pythonanywhere.com?

The official status page reports platform-wide incidents affecting PythonAnywhere as a whole. It says nothing about your individual app being disabled, crashing, or hitting a quota — only a monitor pointed at your URL can catch that.
