The PythonAnywhere newsletter, June 2016

Summer is just around the corner in the northern hemisphere – here in London we can tell because the rain is just that little bit warmer. We’re taking full advantage of the lighter and later grey in the sky by working even longer hours to make PythonAnywhere better. How? Just read on…

Read more…

Today's upgrade - postgres price drop, mysql scaling improvements

Nothing earth-shattering to report today, but some good news:

Postgres is cheaper

It’s been over a year since we first tentatively launched our postgres service, and we’ve found that we’re able to optimise the service so that it scales better than we thought, so we’re pleased to pass on the cost savings to you.

Postgres is now $7/month instead of $15. That price will apply to all new plans and upgrades, and we’ll also start applying the new price to existing users for their next bill. So that more moolah in your pockets dear users, don’t spend it all at once ;)

MySQL infrastructure changes

These changes won’t really be very visible from the user point of view, so this isn’t very interesting to you, beloved readers, per se, but it took us loads of time and effort so we have to say something to make it all feel worthwhile and satisfy our own egos. Anyways, we made some changes to the way we shard users amongst MySQL servers in our clusters, which mean it’s now much easier for us to add extra MySQL capacity whenever we want to.

For the curious, did you know that (depending on your OS and config), filesystem limits on the number of hard links in a single directory might limit you to a maximum of 32,000 databases on a single mysql instance? Not that we ever came anywhere near that, but still, good to know. #tipsforpaasproviders.

Python.org console now Python 3.5

Our live consoles on the python.org front page are now Python 3.5 instead of 3.4. We’ve also made them “regular” Python consoles instead of IPython (which was always a slightly weird decision, even though IPython is all awesome and everything, but a regular Python console is what new users are most likely to see, and ours do have tab-completion switched on you know?)

Onwards and upwards folks! In our next iteration we hope to be able to release a first beta of an API for PythonAnywhere. Watch this space :)

Scaling a startup from side project to 20 million hits/month - an interview with railwayapi.com creator Kaustubh

We recently wished farewell to a customer who had been with us for about 18 months, during which time he saw some incredible growth in what was originally just a side project. We spoke to him about how he found the experience of scaling on PythonAnywhere, and why he decided to move on.

Read more…

Anatomy of a bug

We recently fixed a problem in our website hosting code that was causing weird errors under very specific and rare circumstances. The problem had been there for several years, and – while we knew that odd stuff happened every now and then – we’d never been able to reproduce it reliably enough to debug it. But a lucky coincidence of circumstances, when two people tripped over the bug in quick succession, clarified the issues and let us work out the solution. It’s an interesting tale, so we thought we’d share it.

Read more…

The PythonAnywhere newsletter, April 2016

Spring is here, we’re filled with good intentions, and here is another newsletter, almost exactly a month after the previous one, which is 800% better than our previous interval.

So other than good intentions, clock changes, and eating too much chocolate, what’s been going on? Plenty of stuff it turns out, and it’s all for you, dear users.

Read more…

System upgrade, 2016-04-12: Python 3.5

We upgraded PythonAnywhere today. The big story for this release is that we now support Python 3.5.1 everywhere :-) We’ve put it through extensive testing, but of course it’s possible that glitches remain – please do let us know in the forums or by email if you find any.

There were a few other minor changes – basically, a bunch of system package installs and upgrades:

  • mysqlclient for Python 3.x (so now Django should work out of the box with Python 3)
  • pyodbc and its lower-level dependencies, so you should be able to connect to Microsoft SQL Servers elsewhere on the Internet.
  • pdftk
  • basemap for Python 3.x.
  • pint
  • uncertainties
  • flask-openid
  • And finally, we’ve upgraded Twilio so that it works properly from free accounts.

The PythonAnywhere newsletter, March 2016

Well, it’s been nine months since our last newsletter and we’ve got a lot to tell you… Let’s get started.

Read more…

Webapps and scheduled task expiries

tl;dr: for free accounts, web apps and scheduled tasks will stop running after a while if you don’t log in. We’ll email you a warning before this happens. Here’s why:

Loads of people create free Python websites on PythonAnywhere and this is a really cool thing. Some of these websites are active ones where people are hosting their personal stuff, doing academic things, etc., and they want to keep them running. This is awesome! We want people to do that and we’re happy to host this stuff for free.

For other use cases, some people may setup a webapp to try out a new web framework. Their owners may not intend to keep them running forever. That’s fine too! We’re glad to help people learn.

The problem for us is that we can’t tell which is which.

Read more…

Deprecation warning: "mysql.server" hostname being retired

Relax everyone! We’re not switching off our mysql service, just switching off one of the old names it was available under. You’ll still be able to access it, and more reliably, under the new name, with no downtime. Details follow…

Read more…

Jupyter notebooks finance demo

The goal of this demo is to show how ipython notebooks can be used in conjunction with different datasources (eg: Quandl) and useful python libraries (eg: pandas) to do financial analysis. It will try to slowly introduce new and useful functions for the new python user. Since oil-equity corr has been all the talk these days (this demo was written in Jan 2016), let's take a look at it!

Read more…