deadline = Нет после использования urlfetch.set_default_fetch_deadline(n)
Я работаю над веб-приложением с Python и Google App Engine.
Я попытался установить крайний срок URLFetch по умолчанию, как это было предложено в предыдущей теме:
urlfetch.set_default_fetch_deadline(45)
Однако это не работает - когда я печатаю его значение в одной из функций: urlfetch.get_default_fetch_deadline() - None.
Вот 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
from 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)
Печать в журнале консоли:
DEBUG 2013-09-05 07:38:21,654 main.py:427] value of deadline = None
Функция, которая вызывается в httpRequests.py:
def advance(id, ext=None):
url = "http://localhost:8080/api/" + id + "/advance"
if ext is 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
1 ответ
Я знаю, что это старый вопрос, но недавно столкнулся с проблемой.
Параметр помещается в локальный поток, что означает, что если ваше приложение настроено на потоковую безопасность и вы обрабатываете запрос в другом потоке, отличном от того, для которого вы установили крайний срок по умолчанию, он может быть потерян. Для меня решение было установить крайний срок перед каждым запросом как часть цепочки промежуточного программного обеспечения.
Это не задокументировано, и требуется выяснить источник, чтобы выяснить это.