我有一个试图获取长网址的App Engine应用。经过实验后,似乎由于某种原因App Engine将获取的URL的长度限制为2047.这是错误的堆栈跟踪:
File "/base/data/home/runtimes/python27/python27_lib/versions/1/google/appengine/api/urlfetch.py", line 270, in fetch
return rpc.get_result()
File "/base/data/home/runtimes/python27/python27_lib/versions/1/google/appengine/api/apiproxy_stub_map.py", line 612, in get_result
return self.__get_result_hook(self)
File "/base/data/home/runtimes/python27/python27_lib/versions/1/google/appengine/api/urlfetch.py", line 386, in _get_fetch_result
'Invalid request URL: ' + url + error_detail)
InvalidURLError: Invalid request URL: <LONG URL>
该限制也适用于开发环境。我在App Engine sdk(urlfetch_stub.py
)中找到以下代码:
_MAX_URL_LENGTH = 2048
if len(request.url()) >= _MAX_URL_LENGTH:
logging.error('URL is too long: %s...' % request.url()[:50])
raise apiproxy_errors.ApplicationError(
urlfetch_service_pb.URLFetchServiceError.INVALID_URL)
为什么存在此限制?有没有办法绕过它?对我来说获取非常长的URL非常重要(我正在使用需要长URL的REST API服务)。