PA staff won't assist in writing a script that knowingly violates a sites TOS.
That's right. If we know it's a script to do something naughty, we won't help.
Other users are welcome to assist in writing said script.
Well, we don't want to police the forums and restrict what people can discuss, at least beyond obvious nasty stuff (spam, threats of violence, "hate speech", etc). So if people want to help each other with coding problems then we won't be judgmental or try to shut the conversation down.
PA staff won't prevent a script that violates another sites TOS unless the site in question complains.
We're still discussing that internally, so no definitive answer on that yet. Generally, if we're not aware of the script (so, for example, it hasn't been discussed on the forums cough cough and isn't doing something on our servers that our monitoring picks up -- for example, burning bandwidth by running a DoS) then what we don't know about we can't block. We're not going to put in place stuff to specifically actively look for people using our service to do Bad Things, not least because there are lots of Perfectly OK Things that people could do that might look like Bad Things.
But there's a fine distinction here. Whatever happens, if we learn that someone's using PythonAnywhere to do something illegal then we will shut it down -- if we didn't then we'd be exposing ourselves to liability. A breach of a site's ToS is a different matter.
It's worth noting that our Terms and Conditions
#include the AWS Acceptable Use Policy. We think that the limitations that they set out there -- basically, "nothing illegal", "no hacking", "no network abuse", and "no spamming" are pretty reasonable. And TBH we transitively have to enforce them anyway.
Hope that's a bit clearer.
Scheduled tasks shouldn't be configured to run forever, but if a user configures a way to keep it controlled then they are welcomed to keep it running permanently.
That's the case right now, but it might change. We're considering implementing something that would make old instances of a scheduled task die when the next one was kicked off, so that there's no chance of having hundreds of processes piling up.
In general, a good way to have a constantly-running task is to have a scheduled task that checks to see whether it's already running, and kicks it off in the background if it's not, perhaps by checking for the existence of a file. Cartroo has made some good suggestions about how to do that on various forum posts before.