python - deadline = None after using urlfetch.set_default_fetch_deadline(n) -


i'm working on web application python , google app engine.

i tried set default urlfetch deadline globally suggested in previous thread:

https://stackoverflow.com/a/14698687/2653179

urlfetch.set_default_fetch_deadline(45) 

however doesn't work - when print value in 1 of functions: urlfetch.get_default_fetch_deadline() none.

here main.py:

from google.appengine.api import users import webapp2 import jinja2 import random import string import hashlib import cqutils import time import os import httprequests import logging google.appengine.api import urlfetch urlfetch.set_default_fetch_deadline(45)  ...  class del(webapp2.requesthandler):     def get(self):         id = self.request.get('id')         ext = self.request.get('ext')         user_id = httprequests.advance(id,ext)         d2 = urlfetch.get_default_fetch_deadline()         logging.debug("value of deadline = %s", d2) 

prints in log console:

debug    2013-09-05 07:38:21,654 main.py:427] value of deadline = none 

the function being called in httprequests.py:

def advance(id, ext=none):      url = "http://localhost:8080/api/" + id + "/advance"      if ext none:         ext = ""      params = urllib.urlencode({'ext': ext})     result = urlfetch.fetch(url=url,                             payload=params,                             method=urlfetch.post,                             headers={'content-type': 'application/x-www-form-urlencoded'})      if (result.status_code == 200):         return result.content 

i know old question, ran issue.

the setting placed thread-local, meaning if application set thread-safe , handle request in different thread 1 set default deadline for, can lost. me, solution set deadline before every request part of middleware chain.

this not documented, , required looking through source figure out.


Comments