【发布时间】:2017-09-22 07:37:40
【问题描述】:
在我的 GAE 应用中,我将行添加到 Google 电子表格。
taskqueue.add(url='/tabletask?u=%s' % (user_id),
retry_options=taskqueue.TaskRetryOptions(task_retry_limit=0),
method='GET')
class TableTaskHandler(webapp2.RequestHandler):
def get(self):
user_id = self.request.get('u')
if user_id:
try:
tables.add_row(
user_id
)
except Exception, error_message:
pass
def get_google_api_service(scope='https://www.googleapis.com/auth/spreadsheets', api='sheets', version='v4'):
''' Login to Google API with service account and get the service
'''
service = None
try:
credentials = AppAssertionCredentials(scope=scope)
http = credentials.authorize(httplib2.Http(memcache))
service = build(api, version, http=http)
except Exception, error_message:
logging.exception('Failed to get Google API service, exception happened - %s' % error_message)
return service
def add_row(user_id, user_name, project_id, question, answer, ss_id=SPREADSHEET_ID):
service = get_google_api_service()
if service:
values = [
[
user_id, user_name, project_id, question, answer # 'test1', 'test2'
],
# Additional rows ...
]
body = {
'values': values
}
# https://developers.google.com/sheets/api/guides/values#appending_values
response = service.spreadsheets().values().append(
spreadsheetId=ss_id,
range='A1:E1000',
valueInputOption='RAW',
body=body).execute()
我添加了许多具有不同行值的任务。
在总共处理 5 个请求后,我收到严重错误“超过 128 Mb 和 158 Mb 的软私有限制”。
这里有什么问题?
【问题讨论】:
-
这里有几篇关于任务队列引起的内存问题的帖子。这相当复杂,所以我建议查看这些帖子,然后在需要时更新您的问题。这是一个例子:stackoverflow.com/questions/33036334/…
-
@JeffO'Neill,这个问题是关于 NDB 而不是任务队列。而且我只在遇到内存泄漏时才实现任务队列(在任务队列使用之前有它)。
-
我遇到了与 service.spreadsheets().values() 类似的内存泄漏,如果范围大于 100,则获取或附加。您是否设法解决此问题? @LA_
-
@BorkoKovacev,不,我还没有修复它 - 我已移至 Google Fusion Tables
-
@LA_ 你有融合表吗?我想知道,因为我遇到了与您完全相同的问题。
标签: google-app-engine memory-leaks