thanks! would it be possible to copy the relevant "gotcha" issues to the core docs <https://cloud.google.com/appengine/docs/managed-vms/python/hello-world> or have an "errata" page with workarounds? I spent hours tracking this down, and it seems unreasonable to require new users (of Managed VMs) to read through every bug report... :-(
another example: Images API not supported yet.... thanks! On Mon, Mar 14, 2016 at 9:24 AM, 'Adam (Cloud Platform Support)' via Google App Engine <[email protected]> wrote: > It's a known issue that Managed VMs don't respect 'threadsafe' and this is > mentioned in an issue > <https://github.com/prototipando/google-cloud-sdk/issues/513> on GitHub, > though these details are specific to the Java runtime. Regarding your > workaround I don't see any issues with it. > > On Sunday, March 6, 2016 at 11:41:56 AM UTC-5, Adam Sah wrote: >> >> Is anyone else seeing this? I noticed that global variables were getting >> modified mid-execution and then confirmed by checking os.getpid() and saw >> the same process IDs in two concurrent requests (using time.sleep() to >> force concurrency) >> >> Meanwhile, I drafted up a quick workaround - it seems to work, but I'd >> love a code review! >> >> import logging >> from os import getpid >> from threading import Lock >> from google.appengine.ext import webapp >> from google.appengine.ext.webapp.util import run_wsgi_app >> ... >> class SingleThreadedWSGIApplication(webapp.WSGIApplication): >> def __init__(self, *args, **kwargs): >> self.lock = Lock() >> super(SingleThreadedWSGIApplication, self).__init__(*args, **kwargs) >> def __call__(self, environ, start_response): >> logging.warning("SingleThreadedWSGIApplication.__call__(). pid=%d" % >> getpid()) >> with self.lock: >> return super(SingleThreadedWSGIApplication, self).__call__(environ, >> start_response) >> >> def is_production(): >> ...bunch of custom environment checks... >> >> PATHS=[ ... ] >> >> app = SingleThreadedWSGIApplication(PATHS, debug=(not is_production())) >> >> def main(): >> ... >> run_wsgi_app(app) >> >> if __name__ == "__main__": >> main() >> >> >> relevant parts of app.yaml: >> >> runtime: python-compat >> vm: true >> entrypoint: gunicorn -b :$PORT main:app >> *threadsafe: false* >> api_version: 1 >> instance_class: F4 >> >> >> -- > You received this message because you are subscribed to a topic in the > Google Groups "Google App Engine" group. > To unsubscribe from this topic, visit > https://groups.google.com/d/topic/google-appengine/MuaRKGy2YAw/unsubscribe > . > To unsubscribe from this group and all its topics, send an email to > [email protected]. > To post to this group, send email to [email protected]. > Visit this group at https://groups.google.com/group/google-appengine. > To view this discussion on the web visit > https://groups.google.com/d/msgid/google-appengine/0962c27b-cfda-4622-9a91-198619d083d3%40googlegroups.com > <https://groups.google.com/d/msgid/google-appengine/0962c27b-cfda-4622-9a91-198619d083d3%40googlegroups.com?utm_medium=email&utm_source=footer> > . > > For more options, visit https://groups.google.com/d/optout. > -- You received this message because you are subscribed to the Google Groups "Google App Engine" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at https://groups.google.com/group/google-appengine. To view this discussion on the web visit https://groups.google.com/d/msgid/google-appengine/CALWCfdLg2Q338K8-4gBzAMSyQya6-w%2B%3DBfVc5irRR1NF52bn-Q%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.
