sys.exit() GCP Cloud Function

4

我已经在Python 3.7中编写了GCP云函数。在执行时,当使用sys.exit()时,我会遇到“发生服务器错误...”的错误提示。我需要退出该函数并编写了以下代码:

import sys 
if str(strEnabled) == 'True':
        printOperation = "Operation: Enabling of user" 
else:
        sys.exit() #Exit From the Program

请建议一下,我这里漏掉了什么。

4
使用 return 代替 sys.exit - bigbounty
你的云函数从一个HTTP请求开始。当HTTP请求完成时,它应该返回一个HTTP状态。调用exit()被认为是一种异常,这意味着你的代码崩溃了。相反,通过调用return,你的代码将返回一个成功的状态(HTTP 200)。 - John Hanley
2个回答

3

是的,它起作用了。谢谢。为什么在GCP CF环境中sys.ext()不起作用呢? - Rakesh Gupta
@Rakesh 嗯,return 只是退出函数,但 sys.exit() 通过引发 SystemExit 来退出 Python 解释器。我自己没有使用过 GCP,但我敢打赌它会在你的函数中包装某种异常处理,并且不希望你尝试退出解释器。 - wjandrea

0
如果你正在从另一个函数调用一个函数,并且需要在内部函数中直接退出而不使用return,你可以使用abortabort将直接返回响应并从调用它的位置退出程序。
import sys 
from flask import abort

if str(strEnabled) == 'True':
    printOperation = "Operation: Enabling of user" 
else:
    # abort(200) #return 200
    abort(500, description="Exit") #return 500

注意:云函数在内部使用Flask模块,因此您无需单独安装它。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接