The PythonAnywhere newsletter, September 2018

Well, our last “monthly” newsletter was in September 2017. We must have shifted the bits in the period left one, or something like that :-)

Anyway, welcome to the September 2018 PythonAnywhere newsletter :-) Here’s what we’ve been up to.

Python 3.7 support

We recently added support for Python 3.7. If you signed up since 28 August, 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 – there’s more information in this blog post.

Self-installation of HTTPS certificates

We’ve also been working on making setting up HTTPS on your website a bit more streamlined. Previously you had to get the certificate and the private key, and then email us asking for them to be installed, which could take up to 24 hours. Now you can cut our support team out of the loop and install it all yourself. Check out this blog post for the details.

There will be more improvements to HTTPS support coming soon…


Another shiny new feature: built-in support for forcing people who visit your site to use HTTPS instead of non-secure HTTP, without the need to change your code! Once again, there’s more info on the blog.

PythonAnywhere metrics

We’re wondering if it would be interesting for you to hear a bit about some of the metrics we monitor internally to see what’s happening in our systems. Here’s a random grab-bag of some numbers for this month:

  • Web requests: we’re processing on average about 225 hits/second through our systems (across all websites) with spikes at busy times of up to 350/second. For comparison – apparently that’s about what Stack Overflow have to deal with. But there’s a difference; they’re just one site, but for us…
  • That’s across about 28,000 websites. Of course the number of hits sites get is very much spread over a long tail distribution – many of those sites are ones that people set up as part of tutorials (like the excellent Django Girls), 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
  • By contrast, there are only 10,000 scheduled tasks :-S
  • Our live system currently comprises 51 separate machines on Amazon AWS.

Let us know whether those are the metrics you’d like to see, whether you’d like to see more, or if you think it’s completely uninteresting :-)


Like every tech business in the world, we spent a lot of time late last year and early this year working on ensuring that we were compliant with the GDPR. This was doubly-important to us – most companies are “data controllers” in GDPR terminology, which means that they store data about people, but we are also “data processors”, which means that we run computers and programs that other people use in their role as data controllers. Or, to make that a bit more concrete – if you have personal data about people on a website that you host with us, you’re a data controller, and you’re delegating the data processing to us.

This of course, meant that it was more than twice as much work for us as it was for most people, but we got it all done a week before the deadline :-)

One interesting side-effect of all of this was that we realised that these newsletters sometime say things like “hey, we’ve added this cool new feature (for paid accounts only)” – and when they do say something like that, it’s not unreasonable to see them as marketing. We had to make super-sure that all marketing messages from us were opt-in only, so we unsubscribed everyone from the newsletter and put up a banner on login so that people would know about it.

That in turn means that this newsletter is going to about ten times fewer people than the one before – so if you’re reading it over email, thanks for choosing to receive it :-) Of course, you can always unsubscribe using the link at the bottom of the message, or from the email settings tab on the Account page.

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.7, 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’ve added too many sites to list since our last newsletter to list them all – but please keep them coming!

That’s all for now

That’s all we’ve got this time around. We have some big new features in the pipeline, so keep tuned! Maybe we’ll even get our next newsletter out in October 2018. Or at least sometime in 2018…

comments powered by Disqus