Understanding multiple web workers and multiple users of your website
Oct 29, 2021
by fjl
Over the years, we’ve found that one regular source of confusion for people who
are just getting started with web development is how to handle what we call “global state”.
We’ve written a help page explaining how to solve problems like this
and wanted to expand on it here.
Read more…
Our October system update
Oct 20, 2021
by giles
On 6 October we upgraded our EU-based systems to the latest version of our platform, and today, 20
October, we did the same upgrade on our US-based system. There are a bunch of
changes to report!
Read more…
Async work in Web Apps or – Have Your Cake and Eat It Too
Sep 30, 2021
by pafk
This post is intended for users who begin their adventure with web
applications. You’ll find below how to structure a web app that relies on
heavy processing of the input data – processing that takes so long that
you can’t do it inside a request handler with a five-minute timeout, or at
least so long that you don’t want to risk slowing down your website by
doing it inside the website’s own code. You want it to happen in the
background. You’ll see an example implementing some hints from the “Async
work in Web apps” help page, which involve writing a jQuery
script polling
simple API endpoint communicating with a database updated by an external
script (so there will be some sqlalchemy
stuff too).
Read more…
Ten years on
Aug 5, 2021
by giles
Ten years ago today, on the blog for Project Dirigible, we announced that we’d recently
launched a new site called PythonAnywhere. It almost didn’t happen! The project
we were working on was something completely different, and it was only when we looked at how it was being
used that we realised that it held the seed of a much better idea.
Project Dirigible was an online spreadsheet,
based on Python. Unlike a traditional spreadsheet, where cells can hold only numbers, dates and text,
it supported any Python type, so a cell could contain a list, an object, a numpy array, or even a function
(so, if you don’t value your sanity very highly, you could write a formula like this: =A1(A2.value, A3[6], A4(A5))
).
We’d been hoping that Dirigible would be the breakout success that Resolver One, our desktop Pythonic
spreadsheet, had never been, and would help us free the world from the tyranny of Excel.
It was getting some interest, with a reasonable number of people signing up and using it, but we’d discovered
something odd:
When we asked Dirigible’s beta testers what they were using it for, a surprising number said that it was
for general Python development online. They weren’t using the spreadsheet grid at all!
In retrospect, perhaps it shouldn’t have been so surprising. People want to write Python code, and
sometimes they don’t have a computer with it installed to hand – and it’s always useful to have your code
accessible so that you can work from anywhere. Programmers have
flexibility in the tools they use and can relatively easily move to a new system. By contrast, spreadsheet users
have a lot of existing documents that they want to keep, and many of them are far from being technical people.
They really don’t want to move to something new.
So, we started PythonAnywhere. Here’s a potted history of what happened next.
Read more…
Glastonbury: a new system image, with Python 3.9 and Ubuntu 20.04
Jun 30, 2021
by giles
If you signed up for an account on PythonAnywhere after 21 June 2021, you’ll have Python 3.9 available – you can use it just like any other Python version. Additionally, the underlying operating system for your account will be Ubuntu 20.04, rather than the 16.04 used by older accounts.
If you signed up before that date, you’ll be on an older “system image” – essentially the version of the operating system and the set of installed packages that you have access to. You can switch to the new system image from the “Account” page, but you may need to make changes to your code and/or virtualenvs to make everything work – there’s more information on the linked page.
This post has more details on what’s new in the glastonbury system image. There’s a lot!
Read more…
June system update brings easier task management
Jun 17, 2021
by fjl
The most recent system upgrade brings a new way to organize
scheduled and
always-on tasks.
A new optional description field, combined with sorting, allows you to manage
big herds of multiple tasks.
Under the hood there were some more, larger changes, but we’ll be announcing the
details of those later.
Read more…
System updates on 10 February and 11 March
Mar 11, 2021
by fjl
It’s been a year since PythonAnywhere went all-remote,
but it has not slowed us down, and today was the time to deploy an
exciting set of changes to our system.
Read more…
Brexit update
Dec 29, 2020
by giles
PythonAnywhere is a UK-based company, and the transition period for the UK’s exit from the European
Union on will end on 31 December 2020. This will not have any visible effect for people who use our free
service. For our paying customers outside the EU, including in the UK, there will also
be no changes.
For paying customers inside the EU, the only effect should be that you’ll receive two billing reminders
for January, a “pro-forma” one that will come at the usual time, just before
your monthly payment is made, and another one later on in the month, which will
be the formal “VAT invoice” required by EU tax law.
You will,
of course, only be charged once; the second billing reminder will just provide
some extra tax information. The remainder of this post is the details of why those two billing reminders
will be sent, and we’re posting it here for those who like reading about tax
laws…
Read more…
A Tale of Two Deployments
Oct 5, 2020
by pafk
It was the best of times, it was the worst of times, it was the age of remote work, it was the age of pyjamas, it was the epoch of bread baking, it was the epoch of pineapple pizza, it was the season of Light, it was the season of Darkness…
This is a short but exciting story about two system updates. Spoiler alert: no one has been guillotined.
Read more…
How to use Ansible to update your Django web app
Sep 23, 2020
by fjl
Now, as you have overcome or evaded the reefs, shoals and swirls of initial development and deployment and your appetite
grows, you ask “How do I automate the update and restart of my web app when I change the code?” There is already
one simple and elegant method on our blog, that uses one of the possible
push to publish methods, but this time we will dip our toes into vast waters of Ansible automation.
Read more…