2012-02-08 80 views
1

当我尝试使用文档中提供的相同示例(下面)写入blobstore时,它每次都在dev服务器上工作,但以100%的时间在appspot上出现这个错误:The API call file.Create() took too long to respond and was cancelled.谷歌搜索显示这是一个罕见的问题,虽然有些人已经报道了它。任何想法这里发生了什么?App Engine:API调用file.Create()花了很长时间来响应并被取消

我在dev服务器上使用Python 2.6,这也许可能是为什么我在开发期间看不到这个。

from __future__ import with_statement 
from google.appengine.api import files 

# Create the file 
file_name = files.blobstore.create(mime_type='application/octet-stream') 

# Open the file and write to it 
with files.open(file_name, 'a') as f: 
    f.write('data') 

# Finalize the file. Do this before attempting to read it. 
files.finalize(file_name) 

# Get the file's blob key 
blob_key = files.blobstore.get_blob_key(file_name) 

回溯:

The API call file.Create() took too long to respond and was cancelled. 
Traceback (most recent call last): 
    File "/base/data/home/apps/s~czongae/1.356669185377832769/webapp2.py", line 1516, in __call__ 
    rv = self.handle_exception(request, response, e) 
    File "/base/data/home/apps/s~czongae/1.356669185377832769/webapp2.py", line 1510, in __call__ 
    rv = self.router.dispatch(request, response) 
    File "/base/data/home/apps/s~czongae/1.356669185377832769/webapp2.py", line 1258, in default_dispatcher 
    return route.handler_adapter(request, response) 
    File "/base/data/home/apps/s~czongae/1.356669185377832769/webapp2.py", line 1082, in __call__ 
    return handler.dispatch() 
    File "/base/data/home/apps/s~czongae/1.356669185377832769/webapp2.py", line 552, in dispatch 
    return self.handle_exception(e, self.app.debug) 
    File "/base/data/home/apps/s~czongae/1.356669185377832769/webapp2.py", line 550, in dispatch 
    return method(*args, **kwargs) 
    File "/base/data/home/apps/s~czongae/1.356669185377832769/main.py", line 43, in get 
    file_name = files.blobstore.create(mime_type='text/html') 
    File "/base/python_runtime/python_lib/versions/1/google/appengine/api/files/blobstore.py", line 69, in create 
    return files._create(_BLOBSTORE_FILESYSTEM, params=params) 
    File "/base/python_runtime/python_lib/versions/1/google/appengine/api/files/file.py", line 491, in _create 
    _make_call('Create', request, response) 
    File "/base/python_runtime/python_lib/versions/1/google/appengine/api/files/file.py", line 234, in _make_call 
    rpc.check_success() 
    File "/base/python_runtime/python_lib/versions/1/google/appengine/api/apiproxy_stub_map.py", line 558, in check_success 
    self.__rpc.CheckSuccess() 
    File "/base/python_runtime/python_lib/versions/1/google/appengine/api/apiproxy_rpc.py", line 133, in CheckSuccess 
    raise self.exception 
DeadlineExceededError: The API call file.Create() took too long to respond and was cancelled. 
Saved; key: __appstats__:082400, part: 41 bytes, full: 5691 bytes, overhead: 0.000 + 0.004; link: http://czongae.appspot.com/_ah/stats/details?time=1328696282404 
<class 'google.appengine.runtime.apiproxy_errors.DeadlineExceededError'>: The API call file.Create() took too long to respond and was cancelled. 
Traceback (most recent call last): 
    File "/base/data/home/apps/s~czongae/1.356669185377832769/main.py", line 72, in <module> 
    main() 
    File "/base/data/home/apps/s~czongae/1.356669185377832769/main.py", line 69, in main 
    app.run() 
    File "/base/data/home/apps/s~czongae/1.356669185377832769/webapp2.py", line 1595, in run 
    _webapp_util.run_wsgi_app(self) 
    File "/base/python_runtime/python_lib/versions/1/google/appengine/ext/webapp/util.py", line 98, in run_wsgi_app 
    run_bare_wsgi_app(add_wsgi_middleware(application)) 
    File "/base/python_runtime/python_lib/versions/1/google/appengine/ext/webapp/util.py", line 118, in run_bare_wsgi_app 
    for data in result: 
    File "/base/python_runtime/python_lib/versions/1/google/appengine/ext/appstats/recording.py", line 924, in appstats_wsgi_wrapper 
    result = app(environ, appstats_start_response) 
    File "/base/data/home/apps/s~czongae/1.356669185377832769/webapp2.py", line 1524, in __call__ 
    response = self._internal_error(e) 
    File "/base/data/home/apps/s~czongae/1.356669185377832769/webapp2.py", line 1516, in __call__ 
    rv = self.handle_exception(request, response, e) 
    File "/base/data/home/apps/s~czongae/1.356669185377832769/webapp2.py", line 1510, in __call__ 
    rv = self.router.dispatch(request, response) 
    File "/base/data/home/apps/s~czongae/1.356669185377832769/webapp2.py", line 1258, in default_dispatcher 
    return route.handler_adapter(request, response) 
    File "/base/data/home/apps/s~czongae/1.356669185377832769/webapp2.py", line 1082, in __call__ 
    return handler.dispatch() 
    File "/base/data/home/apps/s~czongae/1.356669185377832769/webapp2.py", line 552, in dispatch 
    return self.handle_exception(e, self.app.debug) 
    File "/base/data/home/apps/s~czongae/1.356669185377832769/webapp2.py", line 550, in dispatch 
    return method(*args, **kwargs) 
    File "/base/data/home/apps/s~czongae/1.356669185377832769/main.py", line 43, in get 
    file_name = files.blobstore.create(mime_type='text/html') 
    File "/base/python_runtime/python_lib/versions/1/google/appengine/api/files/blobstore.py", line 69, in create 
    return files._create(_BLOBSTORE_FILESYSTEM, params=params) 
    File "/base/python_runtime/python_lib/versions/1/google/appengine/api/files/file.py", line 491, in _create 
    _make_call('Create', request, response) 
    File "/base/python_runtime/python_lib/versions/1/google/appengine/api/files/file.py", line 234, in _make_call 
    rpc.check_success() 
    File "/base/python_runtime/python_lib/versions/1/google/appengine/api/apiproxy_stub_map.py", line 558, in check_success 
    self.__rpc.CheckSuccess() 
    File "/base/python_runtime/python_lib/versions/1/google/appengine/api/apiproxy_rpc.py", line 133, in CheckSuccess 
    raise self.exception 
+0

什么是您的应用程序ID?你可以分享一个网址,可以在制作过程中重现pb吗? – proppy 2012-02-08 13:05:49

+0

同样的问题,偶尔。我的appid是yagruma网站 – bustrofedon 2012-02-14 12:28:09

回答

1

它不记录在案,以官方手册。但在打开文件时尝试添加exclusive_lock=True。在我的blobstore从M/S迁移到HRD期间,我认为我有这个问题。

http://code.google.com/p/googleappengine/source/browse/trunk/python/google/appengine/api/files/file.py#402

# Open the file and write to it 
with files.open(file_name, 'a', exclusive_lock=True) as f: 
    f.write('data') 
+0

是的!刚刚在迁移后遇到了这个问题,你的提示为我节省了很多时间。 – 2012-03-16 05:21:13

相关问题