Machine learning in website code

Some machine learning frameworks have problems in PythonAnywhere websites because our web serving framework doesn't allow them to use threads.

Tensorflow

If you try to use TensorFlow in a website's code on PythonAnywhere, it probably won't work. The crash is so serious that you probably won't even see anything in the error log -- just a message in the server log saying that your worker processes died.

The solution

Unfortunately we don't have a good solution for this if you're using TensorFlow directly :-(

However, if you're using Keras with a TensorFlow backend, you can work around the issue -- just switch to using the Theano backend instead. That has been confirmed to work, but only for Keras up to version 2.3.1. Unfortunately Keras is TensorFlow-only since 2.4.

PyTorch

PyTorch also does some slightly strange threading stuff, and will hang when you call certain functions from websites' code. However, there's a simple solution to that:

import torch
torch.set_num_threads(1)

Many thanks to Eden Canlilar for that solution!