urlfetch URL的未记录最大长度?
我有一个在App Engine上运行的应用,它试图获取一个很长的链接。经过一些实验,我发现App Engine似乎把获取的链接长度限制在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)
为什么会有这个限制呢?有没有办法绕过它?对我来说,获取非常长的链接是非常重要的(我在使用一个需要长链接的REST API服务)。