Well, it's been nine months since our last newsletter and we've got a lot to tell you... Let's get started.
Cool new stuff part 1: Jupyter/IPython notebooks
Since the end of last year, all paid PythonAnywhere accounts have supported Jupyter/IPython notebooks. If you go to the "Files" tab, you can run existing notebooks, or create new ones. If you do anything involving data analysis, or exploratory interactive coding, they're a must-see.
We're still working out how to provide some kind of access for free users (without breaking the bank with our own server costs) so stay tuned...
Cool new stuff part 2: Education
Do you teach programming to a class of students? Do you have a coach who's helping you learn to code? Or do you just have a bunch of PythonAnywhere accounts and would like to access them all from one login?
With our new education feature, when you're logged into PythonAnywhere you can go to the "Account" tab and then to the "Teacher" section, and enter the username of another account. The person who's logged in to that other account can then "switch modes" so that they can use the site as if they are you. They can see your files, look at your consoles, and so on.
So -- if you're a teacher, next time you're running a class, ask your students to nominate you as their teacher, and you'll be able to help them without having to shoulder-surf. Super-useful for remote classes. (If you want us to bulk-create a bunch of accounts for your students beforehand, just get in touch on support@pythonanywhere.com.)
If you're a student, just nominate your coach as your teacher, and they can help you with your coding questions quickly and easily.
And if you have a bunch of PythonAnywhere accounts that you want to access while logged in as a "superuser" account, just log in to each of the other accounts in turn and nominate your main account as the teacher. If you're a web developer using PythonAnywhere to host your customers' sites -- in separate accounts to make billing easier -- then you never need to wonder what the login details for each of the customers are.
There's more information here.
More cool new stuff! Part 3, custom consoles
Do you often need to start a console running a particular script? Maybe there's a metrics script you run once a day to find out how much money your wildly-successful website has made over the last 24 hours :-) Or maybe you just want to download some data to update your site.
On the "Consoles" tab, you can add a custom console to do whatever you want. Click on the little "+" icon next to "Custom", and you can enter a name (for you to recognise it by) and a bash command, or a path to a script. Click the checkmark, and you'll have a new custom script on your "Consoles" tab. From now on, every time you want to launch your script, it's just a click away.
Give it a go -- you'll be surprised how many helpful scripts you wind up adding.
More about custom consoles in this blog post.
Yet more cool new stuff! Part 4, web app hit counting
How busy is your website? If you have a free account, you can now go to the "Web" tab and see how many hits you've had in the last hour, day or month -- and comparable numbers for last month. And if you're a paying customer, you get pretty live charts you can zoom into and analyse in depth :-)
Even more cool new stuff! Part 5, a better editor
We've made our in-browser editor (the one you get if you click on a .py
file
in the "Files" tab) much better. Many thanks for everyone for the suggestions!
There are two really noticeable changes:
- The console that shows the results of your code when you click the "Save and run" button is no longer in a popup tab -- it's right there in the editor. No more problems with popup blockers, or having to click back and forth between tabs.
- "Save as" -- it's kind of silly that our editor didn't have this. Now it does :-)
Stuff that isn't really very cool but you probably need to know!
Since day one, we've provided a MySQL database for everyone. The hostname we suggested for accessing it was simply
mysql.server
. (We have stuff in place so that address can point to different places for different people.) That wasn't working too well, unfortunately -- basically, the stuff to make the same address go to different servers for different people made it kind of slow -- so we've changed the address. If you go to the "Databases" tab and look at the top, in the "Connecting" section, you'll see a "Database host address", which is the one you should use now. That address isn't accessible from outside PythonAnywhere (for security reasons) but it will work inside.We are removing support for the
mysql.server
address in the very near future (probably about a month), so update your config accordingly.Website CNAMEs. If you have a paid account and are using a custom domain, we used to tell you to point a CNAME at yourusername.pythonanywhere.com. This really confused lots of people, because you can also have a website at yourusername.pythonanywhere.com, and that might be showing a completely different site to the one on your custom domain. We've revamped that, and now you can specify a different numeric CNAME value that doesn't host a site at all. We recommend you change over -- though, again, we'll continue to support the old-style CNAME for the time being.
From the forums and our blog
Some discussion between user noiv and our very own Conrad: Slack bots running on PythonAnywhere!
Handling millions of visitors for $12 a month: an interview with Kamil, creator of TickCounter.
A beginner's guide to building a simple database-backed Flask website on PythonAnywhere.
Share your code using gist consoles. Also, from the forums, a simple way of getting a live Python console on your site like the one at Python.org.
From user ICD10, two tips for web2py: a deployment recipe for web2py apps and how to send mail with an attachment on a schedule.
A frequently-asked question -- how do you find out the path to the directory where your code is stored?
Also from ICD10: site running slowly? Add workers!
Wondering when your web app's log files rotate? Conrad has the answer.
A great question from mktbup: "System security/version updates: Pythonanywhere's responsibility or mine?".
bigintro asks, "What is the preferred way to update existing apps without taking down the site?"
New modules
Although you can install Python packages on PythonAnywhere yourself, we like to make sure that we have plenty of batteries included. Here's what we've added since the last newsletter:
Python 2.7
plotly (1.9.3)
Upgraded tweepy to 3.5.0 (so that it works with Twitter's latest API)
Python 3.3 and 3.4
We added around 150 packages so that Python 3 packages match (as much as possible) the packages that are available for Python 2.
Here are some highlights, but you can visit the complete list for more details.
GitPython (1.0.1)
google-api-python-client (1.4.1)
pycurl (7.19.5.1)
pyflakes (0.9.2)
pyspotify (2.0.0)
tweepy (3.3.0)
xlrd (0.9.3)
xlwt (1.0.0)
New whitelisted sites
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 -- ones with an official public API -- to stop hackers from using us as a one-stop-shop to hide their identities when doing nefarious things. But we keep adding stuff to the whitelist; since our last newsletter, we've added over 100 new sites, but here are some that you may recognise:
api.coursera.org
api.dropboxapi.com
*.federalreserve.gov
api.pushover.net
api.stripe.com
data.sparkfun.com
soundcloud.com
And that's it!
Thanks for reading, and tune in next month for another exciting newsletter from PythonAnywhere.