Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.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 3.7标准环境下运行Django的Google应用程序引擎的冷启动时间_Python_Django_Python 3.x_Google App Engine_Gunicorn - Fatal编程技术网

改善在Python 3.7标准环境下运行Django的Google应用程序引擎的冷启动时间

改善在Python 3.7标准环境下运行Django的Google应用程序引擎的冷启动时间,python,django,python-3.x,google-app-engine,gunicorn,Python,Django,Python 3.x,Google App Engine,Gunicorn,我正在运行一个基于Django的web应用程序,它是在Python 3.7标准环境下的Google app Engine上运行的。使用应用程序时,请求通常需要500毫秒左右,这是完全可以接受的。然而,当应用程序有一段时间(几分钟)未被访问时,日志显示Google应用程序引擎实例已关闭,下一个请求需要再次加载gunicorn,大约需要20秒 显然,我不能让用户在页面加载前等待20秒。在本地设置上进行测试时,服务器需要几秒钟来加载环境变量,然后调试服务器几乎立即加载 我认为我的代码没有问题,因为一旦

我正在运行一个基于Django的web应用程序,它是在Python 3.7标准环境下的Google app Engine上运行的。使用应用程序时,请求通常需要500毫秒左右,这是完全可以接受的。然而,当应用程序有一段时间(几分钟)未被访问时,日志显示Google应用程序引擎实例已关闭,下一个请求需要再次加载gunicorn,大约需要20秒

显然,我不能让用户在页面加载前等待20秒。在本地设置上进行测试时,服务器需要几秒钟来加载环境变量,然后调试服务器几乎立即加载

我认为我的代码没有问题,因为一旦“冷启动”发生,一切都运行得很快,所以请求并不是在等待数据库读取之类的

有哪些选项可以优化Google App Engine上的django冷启动

到目前为止,我已经将实例类增加到F4,并根据指定了gunicorn workers的数量。理论上我可以使用F4_1G,但这是可用的最高实例,而且它似乎没有解决冷启动问题

我能想到的另一件事是,在我的app.yaml中,我设置了32个环境变量(主要是API凭据),这可能会减慢实例的启动速度。这可能是启动时间过长的主要原因吗?如果是这样的话,是否有一种安全的替代方案,可以在不使用环境变量的情况下向Django提供API凭据


谢谢您

比较GAE和本地计算机上的性能实际上并不相关,请参阅

你在本地看到的那几秒钟不仅仅是加载本地变量(如果你不确信,你可以测量并在日志消息中显示),大部分时间都是用来导入所有需要的库和设置django框架(也许还有你的应用程序的其他东西),您需要对其进行分析,以准确地了解正在发生的事情,并确定可以采取哪些措施来显著改进它

降低冷启动时间影响的典型方法有:

  • -始终运行一个最小实例
  • (但它们不是100%有效)

谢谢,我已经测试过在测试GAE服务中添加相同数量的局部变量,这实际上根本不会影响性能。您能否提供一个链接,说明如何实现最小实例配置?我在GAE支持上找不到任何相关信息。请尝试在
app.yaml
的配置中将
min\u idle\u实例设置为1(并启用预热请求)。您将为一个实际上不会提供大量流量的实例付费,但如果它解决了启动时间问题,您可能可以降低实例类型以进行补偿。