Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 挂起最后一个后端(或模块)memcache写入,直到/\u ah/stop_Python_Google App Engine_Module_Memcached_Backend - Fatal编程技术网

Python 挂起最后一个后端(或模块)memcache写入,直到/\u ah/stop

Python 挂起最后一个后端(或模块)memcache写入,直到/\u ah/stop,python,google-app-engine,module,memcached,backend,Python,Google App Engine,Module,Memcached,Backend,我有一个批处理后端(B4)在python27运行时启用线程。它做了很多解压/酸洗和Numpy/数组的事情 最近我注意到,我得到了更高的后端费用,几乎每次都会达到配额。我迁移到模块(也是B4),认为这可能会解决它,因为我看到了“后端正在被删除”的通知。然而,我仍然看到同样的问题 似乎发生的情况是,代码在最后一次(总是最后一次)memcache写入时挂起,直到配额耗尽。发出/_ah/stop调用时(由于配额),后端会再次唤醒并恢复其处理,然后由于关闭请求而退出 以下是所有相关日志: 2013-08-

我有一个批处理后端(B4)在python27运行时启用线程。它做了很多解压/酸洗和Numpy/数组的事情

最近我注意到,我得到了更高的后端费用,几乎每次都会达到配额。我迁移到模块(也是B4),认为这可能会解决它,因为我看到了“后端正在被删除”的通知。然而,我仍然看到同样的问题

似乎发生的情况是,代码在最后一次(总是最后一次)memcache写入时挂起,直到配额耗尽。发出/_ah/stop调用时(由于配额),后端会再次唤醒并恢复其处理,然后由于关闭请求而退出

以下是所有相关日志:

2013-08-05 15:23:33.962 /BatchRankings 500 19413478ms 0kb instance=0 AppEngine-Google; (+http://code.google.com/appengine) I 2013-08-05 10:00:04.118 mem usage at start of meleerumble: 24.55078125MB ... lots more logs ... I 2013-08-05 10:01:03.550 split bots into 18 sections I 2013-08-05 15:23:03.086 wrote 564 bots to memcache E 2013-08-05 15:23:33.962 Process terminated because the backend took too long to shutdown. 我不知道18个set\u multi\u异步调用怎么可能需要5h23m。这里的日志可以信任吗?可能是实际的代码已经完成了,但是出口没有注册,日志记录是问题所在吗?由于这个原因,我不得不禁用后端处理,因为它消耗的配额和我扔给它的配额一样多


如果您能为我们提供帮助,我们将不胜感激。

您是否对这些后端使用了背景威胁?如果有多少?没有背景线程。任务直接在由cron作业调用的处理程序中运行。它是一个动态的后端,所以当我发送请求时它开始,当我让它单独呆15分钟时它停止。这个问题解决了吗?我很好奇你现在需要用什么代码来处理这个后端/_-ah/stop和/_-ah/start。看来我是在重载memcache,触发某种锁定。我通过将memcache写入的内容分块成10个实体,并在每个实体之间放置第二个延迟来解决这个问题。国际海事组织,仍然不是解决办法。 2013-08-05 15:23:02.938 /_ah/stop 200 5ms 0kb instance=0

client = memcache.Client()
if len(botsdict) > 0:
    splitlist = dict_split(botsdict,32)
    logging.info("split bots into " + str(len(splitlist)) + " sections")

    for d in splitlist:
    rpcList.append(client.set_multi_async(d))
    logging.info("wrote " + str(len(botsdict)) + " bots to memcache")