小编Dus*_*ram的帖子

stackdriver 记录客户端库缺少 python 的严重性

我想从我的应用引擎标准 python3 应用程序向堆栈驱动程序日志发送更具表现力的日志条目。通过遵循官方文档,我能够将我的日志发送到 stackdriver,并且时间戳似乎被正确解析。

但我错过了严重程度。此外,我看不到将某个请求的日志链接到操作的方法。java日志记录似乎是开箱即用的。

供参考,这是我的代码:

import logging
import os

from flask import Flask
from google.cloud import logging as glog

app = Flask(__name__)
log_client = glog.Client(os.getenv('GOOGLE_CLOUD_PROJECT'))
# Attaches a Google Stackdriver logging handler to the root logger
log_client.setup_logging()


@app.route('/_ah/push-handlers/cloudbuild', methods=['POST'])
def pubsub_push_handle():

    logging.info("stdlib info")
    logging.warning("stdlib warn")
    logging.error("stdlib error")
Run Code Online (Sandbox Code Playgroud)

导致堆栈驱动程序的日志:

登录堆栈驱动程序

如您所见,时间戳和消息可用,而严重性奇怪地缺失,它被归类为“任何”

有人可以指出我正确的方向,还是这种级别的合并尚不可用?

谢谢你的时间!卡斯腾

google-app-engine python-3.x google-cloud-platform stackdriver google-cloud-stackdriver

8
推荐指数
1
解决办法
927
查看次数

启用 CORS Google Cloud Function (Python)

可以flask_cors在 Google Cloud Functions 中使用吗?

app = Flask(__name__)
cors = CORS(app)
Run Code Online (Sandbox Code Playgroud)

flask_cors包在本地可以工作,但部署到 Cloud Functions 上时就不行了。

我尝试了很多不同的方法,正如 GCP 建议的那样https://cloud.google.com/functions/docs/writing/http 但我仍然收到 CORS 错误:

对预检请求的响应未通过访问控制检查:请求的资源上不存在“Access-Control-Allow-Origin”标头。

python cors google-cloud-platform flask-cors google-cloud-functions

8
推荐指数
1
解决办法
6397
查看次数

Google Cloud Function - ImportError:无法从“google.cloud”(未知位置)导入名称“pubsub”

我正在部署一个谷歌云函数,它将启动其他谷歌云函数google.cloud.pubsub_v1,我收到了这个错误ImportError: cannot import name 'pubsub' from 'google.cloud' (unknown location)

我的requirements.txt文件的开头是这样的

# Function dependencies, for example:
# package>=version
google-cloud-pubsub
....
Run Code Online (Sandbox Code Playgroud)

我的 main.py 脚本的开头如下所示:

import base64
import json
from google.cloud import pubsub_v1

publisher = pubsub_v1.PublisherClient()
topic_path = publisher.topic_path(<PROJECT_ID>, <PUBSUB_TOPIC>)
Run Code Online (Sandbox Code Playgroud)

我正在从 Google Cloud Source Repository 部署此代码。我已经通读了这篇关于我的错误的SO 帖子,但这个问题似乎是关于客户端应用程序中出现的这个错误。我的错误是在部署过程中由 Google Cloud 函数本身生成的。我无权sudo使用 Google 用来运行我的进程的自动创建的 VM,对吗?我应该能够从requirements.txt文件中解决这个问题,但我尝试过的任何东西似乎都不起作用。

更令人沮丧的是,当我在基于网络的 Google 函数编辑器的“内联编辑器”中放置相同的代码时,我没有收到错误消息。我只在从存储库加载代码时收到此错误。

存储库中的当前文件结构如下所示:

.
??? package
|   ??? main.py
|   ??? script1.py
|   ??? script2.py
??? package2
??? …
Run Code Online (Sandbox Code Playgroud)

python git google-cloud-platform google-cloud-pubsub google-cloud-functions

7
推荐指数
1
解决办法
1万
查看次数

在 python 记录器中做等效的 log_struct

在谷歌示例中,它给出了以下内容:

logger.log_struct({
    'message': 'My second entry',
    'weather': 'partly cloudy',
})
Run Code Online (Sandbox Code Playgroud)

我将如何在 python 的记录器中做同样的事情。例如:

import logging
log.info(
    msg='My second entry', 
    extra = {'weather': "partly cloudy"}
)
Run Code Online (Sandbox Code Playgroud)

当我在 stackdriver 中查看这个时,额外的字段没有得到正确解析:

2018-11-12 15:41:12.366 PST
My second entry

Expand all | Collapse all 

{
 insertId:  "1de1tqqft3x3ri"  
 jsonPayload: {
  message:  "My second entry"   
  python_logger:  "Xhdoo8x"   
 }
 logName:  "projects/Xhdoo8x/logs/python"  
 receiveTimestamp:  "2018-11-12T23:41:12.366883466Z"  
 resource: {…}  
 severity:  "INFO"  
 timestamp:  "2018-11-12T23:41:12.366883466Z"  
}
Run Code Online (Sandbox Code Playgroud)

我该怎么做?

我现在能做的最接近的是:

log.handlers[-1].client.logger('').log_struct("...")
Run Code Online (Sandbox Code Playgroud)

但这仍然需要第二次调用...

python logging python-3.x google-cloud-platform google-cloud-stackdriver

7
推荐指数
1
解决办法
1008
查看次数

如果我的 Google Cloud Scheduler 作业失败,我如何发送电子邮件提醒?

我已经使用 Google Cloud Scheduler 安排了一个 HTTP 调用类型的作业。如果作业失败,我如何发送电子邮件警报?

我已经阅读了 Cloud Scheduler 文档,并在谷歌周围搜索,但答案并不明显。我还尝试了 stackdriver 警报策略,但找不到失败日志条目的相应指标。

我希望可以将电子邮件通知配置为在计划作业失败时发送出去。

google-cloud-platform google-cloud-scheduler

7
推荐指数
2
解决办法
2218
查看次数

使用 selenium 进行 Google 云运行和网页抓取

我目前正在尝试获取一个在 Google Cloud 上使用的网络抓取脚本,以将数据导入到 Google Sheets API。我快速浏览了一下,Google Cloud Run 似乎可以做到这一点。不幸的是,该脚本需要 Selenium 和无头浏览来运行该脚本,而我不知道如何正确执行此操作。我对无服务器脚本的想法还很陌生,并且似乎无法在网络上找到足够具体的信息来满足我对 Selenium 的需求。

我已经能够通过无头 Chrome 使用 Selenium 对脚本/依赖项进行 Dockerize。不过我想知道在 Google Cloud 中部署它的最佳方法是什么?

任何想法将不胜感激。

python selenium web-scraping google-cloud-platform google-cloud-run

7
推荐指数
1
解决办法
1万
查看次数

查找两个圆圈共有的所有点

在Python中,如何找到两个圆共同的所有整数点?

例如,假设两(大小相等的)圆的维恩图状交叉点,与中心点(x1,y1)(x2,y2)和半径r1=r2.另外,我们已经知道圆圈的两个交点是(xi1,yi1)(xi2,yi2).

如何(x,y)以有效的方式生成两个圆圈中包含的所有点的列表?也就是说,绘制一个包含交叉点的框并迭代它是很简单的,检查给定点是否在两个圆内,但是有更好的方法吗?

python geometry intersection points

6
推荐指数
1
解决办法
2562
查看次数

Google Cloud Functions-为什么GCF将两个位置参数传递给我的函数?

我在Python 3.7上有一个Google Cloud Function,它不接受任何输入参数。当我尝试运行它时,它出现以下错误:

TypeError: google_cloud_function() takes 0 positional arguments but 2 were given
Run Code Online (Sandbox Code Playgroud)

实际的功能代码如下所示(调用了不同的bash函数):

import subprocess

def google_cloud_function():
    subprocess.call(["ls"], shell=True)
    subprocess.call(["pwd"], shell=True)
Run Code Online (Sandbox Code Playgroud)

为什么会这样呢?

python-3.x google-cloud-platform google-cloud-functions

6
推荐指数
1
解决办法
552
查看次数

403 客户端错误:使用 twine 上传到 Pypi 时身份验证信息无效或不存在

403客户端错误:使用Twine上传新模块到pypi时出现无效或不存在的身份验证信息

\n\n

Win10 Pro 1803 Biuld 17134.1069 64 位 // Python 3.7.5 32 位 // pip 19.3.1

\n\n

我成功创建了 tar.gz 和whl。在 dist 文件夹中,通过电子邮件确认在https://pypi.org/上注册并开始上传。

\n\n

我用命令行检查了这两个文件(\'PASSED\')

\n\n

并做了以下事情:

\n\n
Uploading distributions to https://upload.pypi.org/legacy/\nEnter your username: gakonorde\nEnter your password:\nUploading gersyll-Alpha.release-py3-none-any.whl\n100%|\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88| 6.43k/6.43k [00:01<00:00, 5.12kB/s]\nNOTE: Try --verbose to see response content.\nHTTPError: 403 Client Error: Invalid or non-existent authentication information. for url: https://upload.pypi.org/legacy/\n
Run Code Online (Sandbox Code Playgroud)\n\n

命令行不允许我在用户名后输入密码。我只能按 ENTER 键。

\n\n

我也尝试过

\n\n
Password for \'your-username\' in \'https://upload.pypi.org/legacy/\':\n
Run Code Online (Sandbox Code Playgroud)\n\n

...再一次,除了 ENTER 之外,我什么也不能按。

\n\n

然后我使用https://pypi.org/及其测试版本的凭据创建.pypirc …

python upload pypi http-status-code-403 twine

6
推荐指数
2
解决办法
4445
查看次数

Google Cloud Run 是否支持流式响应数据?

我刚刚将我的应用程序部署到了 Google Cloud Run。它有一个返回流响应的 HTTP 端点,因此客户端可以在数据传入时开始呈现数据,而不是等待响应完成(大约需要 10 秒)。

响应有一个 content-type header application/stream+json,数据作为单独的行写入响应。我已经通过 HTTPS 在其他地方部署了这个应用程序,并且流媒体在那里工作得很好。

但是,当部署在 Google Cloud Run 上时,客户端在响应完成之前不会收到任何数据。

这是 Google Cloud Run 的限制,还是有办法解决这个问题?

google-cloud-platform google-cloud-run

6
推荐指数
1
解决办法
520
查看次数