你能在AppEngine标准环境中运行Python模块Subprocess吗



你能在谷歌云平台上的标准应用程序引擎中运行Python模块Subprocess吗?

我有一个Flask web应用程序,我想部署它,但它涉及到Subprocess模块,它调用一些批处理脚本。批处理脚本执行关键的CL命令,目前还没有Python API,所以我想不出一个简单的解决方法来消除对Subprocess的依赖。

我是否需要将其部署在Flexible App Engine上才能运行批处理文件?

任何指导都会很有帮助,我在GCP文件中找不到明确的答案,但一些关于在哪里寻找的建议会很好。非常感谢。

这似乎是可行的,但它必须在请求处理中完成。你看了吗https://cloud.google.com/appengine/docs/standard/python3/python-differences#background_threads?

"后台线程

AppEngine标准环境中的Python3没有沙箱限制,因此您可以自由创建位于请求环境之外的线程或进程。线程和进程可以使用Python内置的线程和多处理功能生成。但是,请注意,在提供入站请求之后,可能不会运行新的线程或进程。">

IDK您的脚本的目的是什么,但是,在应用程序引擎STD和FLEX上可以运行子进程,也许您需要创建一个FLEX自定义运行时,为您的bash脚本添加必要的Linux依赖项如何构建自定义运行时。

我在GAE FLEX/STD ENV 上尝试了这个示例代码

app.yaml[FLEX]

runtime: python
env: flex
runtime_config:
python_version: 3.7
entrypoint: gunicorn -b :$PORT main:app

app.yaml〔STD〕

runtime: python37
entrypoint: gunicorn -b :$PORT main:app

requirements.txt

Flask==1.0.2
gunicorn

主.py

from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello():
import subprocess
process = subprocess.run(['ls','-lha'], check=True, stdout=subprocess.PIPE, universal_newlines=True)
output = process.stdout
return output
if __name__ == '__main__':
app.run(host='127.0.0.1', port=8080, debug=True)

最新更新