Is it just me, or after switching to Python3 did you question your life choices as well? I think all the smart people left the product, and if you’re still here, probably you, like me, are an idiot as well.
I think anyone in their right mind moved on back when the concept of PAAS was broken and Python2 to Python3 switch wasn’t possible, all the great things that the original minds built, who included even Guido Van Rossum at one point, was stripped away by a bunch of rascals.
I just realised random things return bytes now on Python3, even something like ndb.Cursor’s .urlsafe() returns a byte response now. Wtf? Who in their right mind would return bytes for a response aimed for an URL …
Everything randomly broken, PR’s and Issues are ignored and gaslighted …
If you’re reading this and work for App Engine Python, maybe just quit? Have some dignity.
The switch from Python 2 to 3 has been painful, without a doubt.
We ran into the urlsafe bytes issue too, among many other gotchyas.
We’ve reported bugs, only for them to be closed off before even being investigated.
The worst part is that apparently you should still be able to enable Python 2 deployments by adding an exemption on your project, but the steps outlined do not work.
When I reported this to our account manager, she organised a call with sales people (!) to try to get us onto a paid support plan (what, so we have to pay to have bugs and issues in your system acknowledged and fixed?).
Hit the issue with ndb.Cursor back in 2022 and documented it here.
That led me down the path of exploring the differences between Python 2.7 & Python 3 and then I also discovered that there could be significant differences between the different versions of Python 3 (i.e. some things are made obsolete while others are moved to different modules).
My takeaway was to budget more time for upgrading apps if I have to switch Python versions.
At the end of the day, I like the fact that Python 3 (on GAE) allows one to use almost any library that can be installed with pip unlike Python 2 which restricted one to a few select third party libraries
At this point it feels more like a subpar ancient instance runner in an age of performant containers, after switching an external component I have has been emailing me non-stop, it only emails when it fails critically to reach App Engine, happened randomly 1-2 times a month, now it’s 10’s of emails a day
It’s as simple as a stupid try/except, even adding it without a flag would’ve worked, should’ve been there from second 1
For my new project I used NodeJS / App Engine a while back, and I did share the same sentiment, it was quite fun after Py issues - but after this recent experience, I think I’ll just replace Datastore with something else and go elsewhere - ultimately the last pillar seems like Datastore to me, but with the network failure rates of Google Cloud, and these network failures not being propagated to App Engine error logs, it seems better to jump ship, I hope I can stop being an idiot and invest in another stack
Well, I have several apps that I migrated from Python27 to Python39 (with the caveat that I still need Python27 in dev env. for everything in app_engine_apis) and they are running almost without a hitch. I don’t receive millions of visits a day, but they do get thousands daily. I like that they are scalable without effort, although my apps rarely need more than 3 instances running at a time.
Like I mentioned before, I still access datastore using ext.db and have no issues there, is part of the reason I haven’t migrated to NDB or anything else. I love SQL databases, I’ve used them for many years in my daily jobs, but the performance, scalability, and cost-effectiveness I get in Datastore (combined with a heavy use of memcache), would be very hard to emulate with SQL Databases. That is the reason why I go through the pain of coding things for Datastore when it’d be much easier in SQL.
Things are running very well for me here, in fact, I learned Python back in 2008 just so that I could use App Engine (they didn’t support any other language at first) and I find it so effortless to scale that I haven’t bothered to look into containers, Cloud Run or what not. Then again, I don’t run anything mission critical nor deal with millions of requests a day.
My only complain is that they seem to be removing the rug from under my feet, by (seemingly)taking away functionality in app_engine_apis, which was always built-in the platform and some of the reasons I started using it in the first place.
Same boat, and if you try NodeJS App Engine, you could more fall in love, think of every technical restriction in Python removed, with a code that can also run on client side
But academically, and professionally, I’ve tested various aspects of App Engine, and it has always failed dramatically, even if we fix/patch the bugs ourselves, it’s impossible to make dropped network requests come back
It might sound like a conspiracy theory, but just build a simple system to count sent/received requests to App Engine, you can easily observe these network failures that never show up in logs, it’s very hard to push for SLA assurances too, after one point they start only refunding the hour that the issue occurred etc. (I used to do it in the past, now I don’t care)
Admittedly, it will be very hard to replace Datastore and my knowledge of it - this I say, even though someone just translated the Python code to JS and called it a day for Javascript, it’s like those sci-fi shows where they maintain a majestic ancient system, built so long ago that those who work on it no longer has any idea of what and why
I have my eye currently set on DynamoDB - would appreciate any suggestion if there is a better alternative out there
Yes, NodeJS has always been tempting to me because of the idea of using the same programming language in the front and back, but I use Python for other areas of my work and have now only so much time in a day to learn new things , so really haven’t decided to go there.
Regarding DynamoDB, I’ve heard good things, but I like the idea of having as much as possible in the same stack if I can help it. That would mean a much bigger move!