COVID-19 update: PythonAnywhere is now all-remote

Scary times. We hope everyone reading this is well and keeping safe!

We thought it would be a good idea to tell you how we’re managing the current crisis at PythonAnywhere. We switched over to remote working last Thursday, 12 March; there are obviously private and public health reasons why that was a good idea, but there’s a reason specific to us, which we thought would be worth sharing.

Read more…

How to use shared in-browser consoles to cooperate while working remotely.

One of the challenges of remote work is when you need to work together on one thing.

Our in-browser consoles are one of the core features of our service. Almost since the beginning, PythonAnywhere has been able to share consoles – you entered the name of another user or an email address, and they got an email telling them how to log in and view your Python (or Bash, or IPython) console. If you use an email, the person you invite doesn’t have to be PythonAnywhere registered user.

Read more…

System updates on 3 and 5 March

On 3 March we upgraded our EU-based system at to the latest version of our code, and this morning (5 March) we upgraded our US-based system at to the same version.

Everything went very smoothly, and all systems are working well. There were a bunch of infrastructure-related changes in this update:

  • We’ve made some improvements to the beta of our new virtualisation system, which is currently in public beta. More about that next week, we hope!
  • We’ve updated almost all of our machines to the most recent AWS Intel server types; the remainder will be upgraded over the coming two weeks. CPU geeks will be glad to hear that we’re going to start experimenting with AMD. We might also consider ARM for our own internal systems, though right now it feels like sticking with x86-64 for the servers where our users run their code is the best option (let us know if in the comments if you disagree!)
  • A certain amount of code that was (somewhat embarrassingly) still Python 2 was upgraded to Python 3. blush

As usual, there were also a number of minor tweaks and minor bugfixes.

Onwards and upwards!

The PythonAnywhere newsletter, January 2020

So, we have managed to break another record for our longest period ever between two monthly newsletters. It has been sixteen busy months between September 2018 and now, so we have made 2019 an official Year Without a Newsletter.

Happy New Year, and a warm welcome to the January 2020 PythonAnywhere newsletter. Hooray! Here is what has happened since our last one.

Read more…

Python 3.8 now available!

If you signed up since 26 November, you’ll have Python 3.8 available on your account – you can use it just like any other Python version.

If you signed up before then, it’s a little more complicated, because adding Python 3.8 to your account requires changing your system image.

Read more…

System update on 21 November 2019

This morning’s system update went smoothly; some websites did take a bit longer than we expected to start up afterwards, but all is well now.

There are two big new features that we have introduced which are going through some final post-deploy tests before they go live – a new system image (called fishnchips) to support Python 3.8 and to add on a number of extra OS packages that people have been asking us for, and an update to our virtualization system that will fix a number of problems with specific programs. We’ll be posting more about those when they’re ready to go live. [Update: we’ve posted about the fishnchips system image here.]

But there were a number of other things we added:

  • We’ve added the ability to restart an always-on task without stopping it, waiting for it to stop, and then starting it again – there’s a new “restart” button on the far right of the tasks table.
  • You can now temporarily disable a website without deleting it – the button is near the bottom of the “Web” page.
  • And, of course, the normal set of minor tweaks, bugfixes, and the like.

Happy coding!

EU migrations are now live!

In brief: if you have an account on you can have it migrated to – just let us know via email to

If you’d like to know more about what that means, read on…

Read more…

Our new CPU API

We received many requests from PythonAnywhere users to make it possible to programmatically monitor usage of CPU credit, so we decided to add a new endpoint to our experimental API.

Read more…

Using our file API

Our API supports lots of common PythonAnywhere operations, like creating and managing consoles, scheduled and always-on tasks, and websites. We recently added support for reading/writing files; this blog post gives a brief overview of how you can use it to do that.

Read more…

System update on 26 June

Our system update on 26 June went pretty smoothly :-) There were a number of useful changes:

  • Our API now supports uploading, downloading and listing files in your private file storage. There is another blog post about this.
  • We now have an official system in place to migrate your MySQL data between database servers, which means that if you’re on an older version, we can move you over to 5.7. Let us know if you’re interested!
  • Our system for migrating user accounts from our US-based system at to our EU-based one at is almost finished – just a few final bugs to work out. We’ll post about this again when it’s ready to go live. Update: it’s now live.

We also pushed a number of bugfixes:

  • A number of issues which meant that always-on tasks could lose access to the network have been fixed.
  • Previously, if you tried to change the command for an always-on task that was disabled, you’d get an error – this has been addressed.
  • Some HTTP libraries (which seem particularly common on IoT devices) put the port number in the host header on requests (eg. they send rather than This is perfectly valid HTTP, albeit uncommon, but our system failed to parse them correctly and would respond with a 404 error. We’ve fixed that.

There were also a whole bunch of minor UI tweaks and the like.

Right now we’re working on making sure that our billing system supports the Strong Customer Authentication (SCA) regulations that will come into force for all payments from European credit/debit cards this September; hopefully we can make this as seamless as possible for you.

Happy coding!