WARNING: This is a development server. Do not use it in a production deployment


WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead.

What can go wrong if we stay in development server ?

Frappe uses werkzeug (same as Flask) to be WSGI compliant. In development mode, Frappe uses werkzeug.serving.run_simplewhich is designed to be a development server.

There are many considerations to be considered while designing a dev/prod server - Werkzeug provides a lightweight option designed for development, not production. One way to think about this is that washing machines at home and laundromats are very different - even though they do the same thing, they function in very different environments & have varied requirements.

From the Flask docs:

“Production” means “not development”, which applies whether you’re serving your application publicly to millions of users or privately / locally to a single user. Do not use the development server when deploying to production. It is intended for use only during local development. It is not designed to be particularly secure, stable, or efficient.

But if you did end up using it in production, important features like timeouts, number of parent/child workers, types of workers, etc. that Frappe utilizes to maintain a robust web server will be lost. You can read more about this in the Gunicorn docs I’ve linked below.


I see.

When converting dev to production, will it affect:

  1. will it wipe data/doctypes? or lose any?
  2. will the :8000 be converted to no port in the browser?
  3. will bench update be affected eventually?