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.

Python 3.8 now available

We recently added support for Python 3.8. If you signed up after 4 December 2019, you’ll have it 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, but we can update your account to provide it – more information here.

Always-on tasks

Always-on tasks are a feature we rolled out for paid accounts in our October 2018 update. Essentially, you specify a program and we keep it running for you all the time. If it exits for any reason, we’ll automatically restart it – even in extreme circumstances, for instance if the server that it’s running on has a hardware failure, it will fail over to another working machine quickly.

Let’s Encrypt certificates with automatic renewal

You can now get a free, automated HTTPS certificate for your custom domain using Let’s Encrypt. Previously, there was all sorts of tedious manual mucking around with dehydrated to get that free cert. And you won’t need to remember to renew the certificate anymore either! (or as was the case for some of our users, setting up a scheduled task to auto-renew your certificate!) Now this will all happen behind the scenes automatically.

Deployment of and migration option

Back in February 2019, we announced It’s a completely separate version of our site, with all of the computers and storage hosted in Frankfurt, rather than in the US for

In November 2019 we made a migration system available to our users. It allows us to move accounts from the US system to the EU one with minimal downtime. If you have an account on and would like it to be moved to, just let us know via email (


We published some tutorials and HOW-TOs:

PythonAnywhere metrics

As in the last newsletter we wanted to share some of the metrics:

  • Web requests: we’re processing on average about 375 hits/second through our systems (across all websites) with spikes at busy times of up to 450/second.
  • That’s across about 49,000 websites. Of course the number of hits sites get is spread over a long tail distribution – some of those sites are ones that people set up as part of tutorials, so they only get hits from their owners, while on the other hand the busiest websites might be processing 40 hits/second at their peak times
  • There are over 9,000 scheduled and always-on tasks.
  • Our live system currently comprises 69 separate machines on Amazon AWS in the US cluster and 17 in the EU one.

New modules

Although you can install Python packages on PythonAnywhere yourself, we like to make sure that we have plenty of batteries included.

Everything got updated for the new system image that provides access to Python 3.8, so if you’re using that image, you should have the most recent (or at least a very recent) version of everything :-)

New whitelisted sites

Paying PythonAnywhere customers get unrestricted Internet access, but if you’re a free PythonAnywhere user, you may have hit problems when writing code that tries to access sites elsewhere on the Internet. We have to restrict you to sites on a whitelist to stop hackers from creating dummy accounts to hide their identities when breaking into other people’s websites.

But we really do encourage you to suggest new sites that should be on the whitelist. Our rule is, if it’s got an official public API, which means that the site’s owners are encouraging automated access to their server, then we’ll whitelist it. Just drop us a line with a link to the API docs.

We keep adding new sites to the list every day.

And now for something completely different

You might not have noticed, but in August 2019 a Florida man has hand-captured a Burmese python measuring 17 feet, 9 inches.

comments powered by Disqus