有没有办法对本地appengine开发服务器强制执行30秒限制?

时间:2010-06-13 00:22:37

标签: python django google-app-engine

嘿,我想知道是否有办法强制执行在appengine生产服务器上在线执行到本地开发服务器的30秒限制?如果我在上市前达到极限就无法测试。

也许有些django middlware?

2 个答案:

答案 0 :(得分:1)

您可以编写(并在WSGI堆栈中插入)一个有用的WSGI middleware部分,它使用threading.Timer来记录事务超过30秒的事实(当然还要调用{{3}在出路上的计时器对象上,因为没有什么可以登录的。)

我是在WSGI级别,而不是Django级别,(a)因为我更熟悉WSGI中间件和(b)因为它是一个更通用的解决方案(它可以帮助Django Web应用程序,但它可以还可以使用任何其他框架帮助Web应用程序 - 无论您决定在其上放置什么框架,都可以通过App Engine保证WSGI的使用。

你需要稍微调整一下“30秒”进行校准,因为你的开发机器的功率,可用内存,磁盘速度等当然不能与谷歌完全相同,而且许多子系统(尤其是存储系统)在“本地SDK”和“在Google的实际服务器上”具有非常不同的实现,并且在任何给定的情况下可能恰好更慢(或者更快! - )。

考虑到前一段中的注意事项,让中间件始终记录事务的总耗用时间实际上更有帮助 - 这样您就可以监视事务(当它们可能在开发服务器上30秒内终止时) )正在花费相当的时间(例如15或20秒或更长时间),特别是如果他们有多个存储事务可能会减慢他们在真实生产服务器上的速度/

答案 1 :(得分:1)

正如Alex所展示的那样可能,但这并不是一个好主意:开发服务器的性能特征与生产环境的性能特征不同,因此可以在本地快速执行的东西可以在生产中不会那么快,反之亦然。

此外,面向任务的用户绝对不应该太慢以至于接近30秒的限制。

相关问题