python - Google Cloud Run 中的@response.call_on_close 问题
问题描述
我正在尝试在 Google Cloud Run 上编写一个使用 @response.call_on_close 的脚本,向调用者发送一个中间返回并在此之后进行一些处理,这样调用者就不会一直等待。
该脚本涉及 Selenium 的使用,它在本地 Cloud Run 中运行良好,但在实际云上部署时,我收到“devToolsActivePort 文件不存在”错误。
当我注释掉所有@response.call_on_close部分并直接调用它时,它也可以正常工作,所以它与Selenium无关,装饰器部分肯定有问题但我无法弄清楚。
这是我用来拨打电话的代码:
from flask import Flask, request
from scraper import scrap
app = Flask(__name__)
@app.after_request
def response_processor(response):
request_json = request.get_json()
keyword = request_json['keyword']
tztimezone = request_json['tztimezone']
@response.call_on_close
def process_after_request():
scrap(keyword, topic, tztimezone)
return response
@app.route("/", methods=['GET', 'POST'])
def main():
if request.method != 'POST':
return 'Only POST requests are accepted', 405
return ''
任何帮助将不胜感激。
谢谢!
解决方案
向客户端返回响应后,您无法执行 CPU 处理。
一旦您返回响应,Google Cloud Run 就会认为服务请求已完成。CPU 将为您的容器进入睡眠状态,直到下一个请求。
此链接将有所帮助:
推荐阅读
- python - Wake Up Agent Python 2.7 script
- vba - 我正在尝试删除 excel 中的单元格,因为它们的值从另一个函数呈现为空白
- javascript - 反应路由器和 webpack 似乎产生了错误的输出,在某些 URL 中给出了 404
- typescript - TypeScript 中带有推导和 `keyof` 的细粒度类型
- python - 什么命令会在 bash 脚本中引发错误?
- ios - 如何删除特定单元格的模糊视图?
- powershell - 在 Powershell 中为任务创建进度条
- c++ - 如何将模板类 X 的模板成员函数声明为嵌套类 X::Y 的朋友
- drools - Drools 决策表 - 如何在同一条件列中使用多个对象
- javascript - 每次我使用路由导航到组件时都会获取角度 http