使用 python-api-client 异步插入所有请求

Posted

技术标签:

【中文标题】使用 python-api-client 异步插入所有请求【英文标题】:Async insertAll requests using python-api-client 【发布时间】:2014-11-24 13:40:40 【问题描述】:

我正在使用以下代码将数据从 App Engine 流式传输到 BigQuery。当前请求被阻塞。有没有办法只使用 apiclient 使这些请求异步(不使用 deferred 库或类似库)?

credentials = AppAssertionCredentials(scope = 'https://www.googleapis.com/auth/bigquery')
http = credentials.authorize(httplib2.Http())
bigquery = build('bigquery', 'v2', http = http)
bigquery.tabledata().insertAll(
    projectId = PROJECT_NUMBER,
    datasetId = DATASET_ID,
    tableId = TABLE_ID,
    body = body).execute()

【问题讨论】:

也许这会有所帮助cloud.google.com/appengine/docs/python/urlfetch/… @VincentBeltman 谢谢,我熟悉并使用 urlfetch rpc 请求。我想知道是否有办法只使用apiclient 而不是手动分派请求。 据我所知,apiclient 中没有这样的东西。实际上,我查看了整个代码,但找不到任何代码。那是大约半年左右的时间。也许它改变了。 【参考方案1】:

Python api 客户端(来自https://developers.google.com/api-client-library/python/)是一个同步客户端。您必须在客户端之外管理异步请求。

【讨论】:

以上是关于使用 python-api-client 异步插入所有请求的主要内容,如果未能解决你的问题,请参考以下文章

StackExchange Redis 在使用异步插入/读取数据时丢失了一些密钥

使用twisted将mysql插入变成异步执行

如何使用 mongoDb java 异步驱动程序插入 mongoDb 集合后获取 _id

意图服务中的多个异步 Ado.net sql 插入

防止在 postgres 上的异步插入重复

防止更新和插入之间的异步读取