限制每个App Engine实例的任务请求数

And*_*w F 1 python google-app-engine memory-management task-queue python-2.7

我有一个Google App Engine应用程序,可定期处理内存密集型长时间运行任务.我在线程安全模式下在Python2.7运行时使用taskqueue API,因此我的每个实例都同时处理多个任务.结果,我经常遇到这些错误:

在为8个请求提供服务后,超出了137.496 MB的软私有内存限制

处理此请求后,发现处理此请求的进程使用了​​太多内存并被终止.这可能会导致新进程用于您的应用程序的下一个请求.如果经常看到此消息,则可能是应用程序中存在内存泄漏.

据我所知,每个实例每个都承担8个任务,并最终达到软内存限制.这些任务从使用非常少量的内存开始,但最终增长到大约15-20MB.

有没有办法限制告诉App Engine为实例分配不超过5个请求?或者告诉App Engine该任务预计在10分钟内使用20MB内存并进行相应调整?

我不想使用后端API,因为我希望处理任务的实例数量能够自动扩展,但如果这是唯一的方法,我想知道如何构建它.

Nic*_*son 7

目前还没有任何方法可以为App Engine基础架构提供相关建议.如果它们现在不能运行,您可以让任务返回非200状态代码,在这种情况下,它们将被自动重试(可能在另一个实例上),但这可能会导致大量的流失.后端可能是您的最佳选择.

如果设置动态后端,则只会根据任务队列流量的需要进行调整.您可以通过将后端的URL指定为"目标"参数来将任务发送到后端.

通过使用拉取队列,您可以获得对任务执行的更多控制.然后,您可以根据您的选择启动后端(或者使用推送队列任务),并让实例以任何适合的方式从拉取队列中拉出任务.