必须回答 HTTP 请求。是Cloud Run的合约
但是,如果您已经有一个 python 脚本,那么很容易将它包装在一个烧瓶网络服务器中。比方说,你有这样的东西(我假设文件名是 main.py -> 对 Dockerfile 很重要)
import ....
var = todo(...)
connect = connect(...)
connect(var)
- 首先,将其包装在这样的函数中
import ....
def my_function(request):
var = todo(...)
connect = connect(...)
connect(var)
return 'ok',200
- 其次,添加一个flask server
from flask import Flask, request
import os
import ....
app = Flask(__name__)
@app.route('/')
def my_function(request):
var = todo(...)
connect = connect(...)
connect(var)
return 'ok',200
if __name__ == "__main__":
app.run(host='0.0.0.0',port=int(os.environ.get('PORT',8080)))
- 在您的
requirements.txt 中添加烧瓶
- 构建标准容器,这里是 Dockerfile 的示例
FROM python:3-alpine
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
ENV PORT 8080
CMD [ "python", "main.py" ]
- 构建(例如使用 Cloud Build)并在 Cloud Run 上部署服务
现在您有了一个可以使用 Cloud Scheduler 调用的 URL。
请注意,最大请求持续时间目前限制为 15 分钟(很快会增加 4 倍),限制为 2vCPU 和 2Gb 内存(同样,很快会更多)。