请求的类型为 LocalProxy,但应为以下之一:bytes、unicode
Request has type LocalProxy, but expected one of: bytes, unicode
我正在尝试在 Google 云函数中使用 Google 云平台自然语言 API 和 Python。每当我使用 this Google 教程中提供的代码在 Cloud Storage 中使用文本分析实体分析时,我都会收到以下错误消息:
File "/user_code/main.py", line 9, in entity_sentiment_file
type=enums.Document.Type.PLAIN_TEXT)
TypeError: <Request 'http://25e4801f1004e4eb41d11633d9b2e9e9-dot-ad6bdc7c397c15e62-tp.appspot.com/'
[POST]> has type LocalProxy, but expected one of: bytes, unicode
我在成功部署函数并单击 "Test the Function" 并触发事件空花括号 {} 后收到该错误消息,然后转到“查看日志”页面。
我尝试提供如下所示的测试事件参数,但我得到了相同的结果。
{"gcs_uri":"gs://test-news-articles/news-article-1.txt"}
这是我的全部功能:
from google.cloud import language
from google.cloud.language import enums
from google.cloud.language import types
def entity_sentiment_file(gcs_uri,request=None):
print('gcs_uri: {}'.format(gcs_uri))
client = language.LanguageServiceClient()
document = types.Document(
gcs_content_uri=gcs_uri,
type=enums.Document.Type.PLAIN_TEXT)
# Detect and send native Python encoding to receive correct word offsets.
encoding = enums.EncodingType.UTF32
if sys.maxunicode == 65535:
encoding = enums.EncodingType.UTF16
result = client.analyze_entity_sentiment(document, encoding)
for entity in result.entities:
print(u'Name: "{}"'.format(entity.name))
for mention in entity.mentions:
print(u' Begin Offset : {}'.format(mention.text.begin_offset))
print(u' Content : {}'.format(mention.text.content))
print(u' Magnitude : {}'.format(mention.sentiment.magnitude))
print(u' Sentiment : {}'.format(mention.sentiment.score))
print(u' Type : {}'.format(mention.type))
print(u'Salience: {}'.format(entity.salience))
print(u'Sentiment: {}\n'.format(entity.sentiment))
如有任何帮助,我们将不胜感激。
响应 HTTP 请求的函数需要具有签名:
def my_function(request):
...
其中 request
由 Cloud Functions 运行时针对每个新请求提供。
现在,gcs_uri
被设置为 request
值(这是一个 LocalProxy
类型),然后您试图用它格式化一个字符串,这会导致异常。
我不确定您期望 gcs_uri
来自哪里,但它不会作为参数提供给函数。如果您使用 JSON 提出请求,则可以使用 request.json['gcs_uri']
获得。有关详细信息,请参阅“Writing HTTP Functions”。
我正在尝试在 Google 云函数中使用 Google 云平台自然语言 API 和 Python。每当我使用 this Google 教程中提供的代码在 Cloud Storage 中使用文本分析实体分析时,我都会收到以下错误消息:
File "/user_code/main.py", line 9, in entity_sentiment_file
type=enums.Document.Type.PLAIN_TEXT)
TypeError: <Request 'http://25e4801f1004e4eb41d11633d9b2e9e9-dot-ad6bdc7c397c15e62-tp.appspot.com/'
[POST]> has type LocalProxy, but expected one of: bytes, unicode
我在成功部署函数并单击 "Test the Function" 并触发事件空花括号 {} 后收到该错误消息,然后转到“查看日志”页面。
我尝试提供如下所示的测试事件参数,但我得到了相同的结果。
{"gcs_uri":"gs://test-news-articles/news-article-1.txt"}
这是我的全部功能:
from google.cloud import language
from google.cloud.language import enums
from google.cloud.language import types
def entity_sentiment_file(gcs_uri,request=None):
print('gcs_uri: {}'.format(gcs_uri))
client = language.LanguageServiceClient()
document = types.Document(
gcs_content_uri=gcs_uri,
type=enums.Document.Type.PLAIN_TEXT)
# Detect and send native Python encoding to receive correct word offsets.
encoding = enums.EncodingType.UTF32
if sys.maxunicode == 65535:
encoding = enums.EncodingType.UTF16
result = client.analyze_entity_sentiment(document, encoding)
for entity in result.entities:
print(u'Name: "{}"'.format(entity.name))
for mention in entity.mentions:
print(u' Begin Offset : {}'.format(mention.text.begin_offset))
print(u' Content : {}'.format(mention.text.content))
print(u' Magnitude : {}'.format(mention.sentiment.magnitude))
print(u' Sentiment : {}'.format(mention.sentiment.score))
print(u' Type : {}'.format(mention.type))
print(u'Salience: {}'.format(entity.salience))
print(u'Sentiment: {}\n'.format(entity.sentiment))
如有任何帮助,我们将不胜感激。
响应 HTTP 请求的函数需要具有签名:
def my_function(request):
...
其中 request
由 Cloud Functions 运行时针对每个新请求提供。
现在,gcs_uri
被设置为 request
值(这是一个 LocalProxy
类型),然后您试图用它格式化一个字符串,这会导致异常。
我不确定您期望 gcs_uri
来自哪里,但它不会作为参数提供给函数。如果您使用 JSON 提出请求,则可以使用 request.json['gcs_uri']
获得。有关详细信息,请参阅“Writing HTTP Functions”。