- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用 GAE TaskQueue 的 REST API 将任务从队列中提取到外部服务器(不在 GAE 上的服务器)。
有图书馆可以帮我做这件事吗?
API 很简单,所以我只需要弄清楚身份验证即可。我使用 --dump_request
检查了 gtaskqueue_sample
从 google-api-python-client
发送的请求,并找到了 authorization: OAuth XXX
header 。将该 token 添加到我自己请求的工作中,但该 token 似乎会定期(可能每天)过期,而且我无法弄清楚如何重新生成它。就此而言,gtaskqueue_sample 本身不再有效(对 https://accounts.google.com/o/oauth2/token
的调用失败并显示 No JSON object could be decoded
).
如何进行身份验证?这是一个服务器应用程序,因此理想情况下我可以生成一个我可以从那时起使用的 token 。
最佳答案
这个问题很老,但仍然适用,所以我将根据我最近的经验尝试一个更好的答案。
可以在 appengine 之外访问拉任务队列,但正如提问者所说,没有很好的例子,所以这里有一个更深入的指南。在我的例子中,我有一个自定义 python 脚本,需要轮询队列以运行新作业。
在采用此路线之前,您还可以选择滚动自己的安全性并为应用引擎任务队列调用制作一个简单的 Web 包装器。在处理完这个问题后,我很想走那条路,但由于这是有效的,所以我现在就使用它。
设置您的机器
设置您的帐户
使用 Google Cloud Console ,创建一个已注册的应用程序(如果您还没有。单击您的 AppEngine 项目 -> API 和身份验证 -> 已注册的应用程序。您可以输入名称和应用程序类型,然后接受默认值。创建后,请注意Client Id 和 Client Secret 以备后用。
同时更新您的同意屏幕(API 和授权 -> 同意屏幕)。请注意,您只需要此同意屏幕即可首次设置您的 oauth 凭据。您将需要输入电子邮件地址和产品名称(我还输入了主页网址)。
生成 OAuth 凭证
您只需生成一次凭据文件,然后它将用于您的 python 脚本中的 future 调用。运行此 python 代码,它会打开浏览器并生成凭证文件。此代码的引用是 here .
from oauth2client.tools import run
from oauth2client.client import OAuth2WebServerFlow
from oauth2client.file import Storage
import gflags
FLAGS = gflags.FLAGS
storage = Storage('credentials.json')
flow = OAuth2WebServerFlow(client_id='<your_client_id>',
client_secret='<your_client_secret>',
scope='https://www.googleapis.com/auth/taskqueue',
redirect_uri='urn:ietf:wg:oauth:2.0:oob')
credentials = run(flow, storage )
进行任务队列调用
确保您已在 AppEngine 中添加拉取队列 queue.yaml ,以及您在上述 oauth 步骤中使用的电子邮件地址。
from oauth2client.tools import run
from oauth2client.client import OAuth2WebServerFlow
from oauth2client.file import Storage
from apiclient.discovery import build
import httplib2
storage = Storage('credentials.json')
credentials = storage.get()
http = httplib2.Http()
http = credentials.authorize(http)
task_api = build('taskqueue', 'v1beta2')
tasks = task_api.tasks().lease(project='<your appengine project>',taskqueue='<pull queue name>', numTasks=1, leaseSecs=600).execute(http=http)
task = tasks['items'][0]
payload = task['payloadBase64']
payload = base64.b64decode(payload)
#then do your work and delete the task when done
task_api.tasks().delete(project='s~<your appengine project>',taskqueue='<pull queue name>', task=task['id']).execute(http=http)
任务队列 API Reference
2014 年 7 月 1 日更新
所以实际上有一种更简单的方法来进行服务器到服务器的调用。这种方式不需要您使用“流程”(登录到 google)来获取访问 key 。
设置您的机器
设置您的帐户
从上方替换凭证代码
from oauth2client.client import SignedJwtAssertionCredentials
email = '<***>.gserviceaccount.com'
f = file('client_key.p12', 'rb')
key = f.read()
f.close()
credentials = SignedJwtAssertionCredentials(email,
key,
scope='https://www.googleapis.com/auth/taskqueue')
关于python - GAE 任务队列 : Sample code for accessing pull queue from outside App Engine?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6965431/
有没有办法 git pull 直到有东西可以 pull 。 假设我正在等待一位同事推送他的最新更改,因为我不耐烦并且没有看他的屏幕,我只是运行 watch git pull 直到我看到有东西被 pul
这个问题在这里已经有了答案: What is the difference between 'git pull' and 'git fetch'? (37 个答案) 关闭 6 年前。 这个问题我一直
我有一个分支,想使用 $ git pull origin master 将 master 中的更改 git在我这样做之后, pull 确实没有显示任何 merge 的 PR 被 pull 并且说它已经
在各个地方,寻找有关如何从 GitHub merge 请求创建本地分支的说明,我看到了两个版本: git fetch upstream refs/pull/PR_ID/head:NEW_LOCAL_B
我已经在github上创建了一个仓库。 Upstream中有一些新的 pull 请求。我想从本地上游 pull 请求。 我怎样才能做到这一点?我不知道,没有发现任何与此相关的信息。 最佳答案 通过首先
假设我 fork 一个 GitHub 项目并进行一些更改,然后为要 merge 到的更改创建 pull 请求我从中 fork 的原始项目。 一旦我这样做了,如果我返回到我的 fork 项目并提交更多文
我在 BitBucket 上有一个 Git 存储库。我有两个分支 master 和 db。在我的笔记本电脑上,我对 db 进行了更改,提交了更改并推送到 BitBucket。我可以在该分支中看到提交。
我在分支 tm-skeleton并执行 git pull 做某事(从技术上讲,它要求输入密码,然后我在那里点击了 ),但我怎么知道它从哪里 pull ?通常,[branch "tm-skeleton"
我们在组织中使用 Github 进行源代码控制。多个开发人员不断地将他们的更改 merge 到远程源存储库。就我而言,我在两周前克隆了存储库,之后进行了多次 merge 。现在我正在尝试获取代码的最新
在 merge pull 请求之前,我想在本地快速 pull 请求并运行测试并测试一些内容。我还不想点击 gihub merge pull 请求。 我认为滑轮会有所帮助 http://ejohn.or
我有一个服务器,其中有一些我不知道我在哪里的配置我只是 git pull 并获取 github 存储库中的内容,然后重新启动它以进行部署。 问题是,有一个不是我最新的提交,它实际上不在我的服务器上。这
我是 Git 的新手,所以如果这是微不足道的,我深表歉意。我有一个使用 Github 和 EGit 设置的私有(private)存储库. 要更新并 merge 我的本地存储库分支与远程版本(本质上是g
pull 请求的发起者可能 give the maintainer the ability to edit the pull request . 对于任何给定的 pull 请求,我们如何判断该能力是否
我 fork 了一个GitHub存储库,并在 fork 上进行了一些更改,然后提交了一个 pull 请求,但是原始GitHub存储库的所有者要求对它们进行 pull 请求中的一些更改。我以为在fork
如何使用 Git GUI 工具进行拉取?似乎任何地方都没有 pull 命令。 是否有使用 Git GUI 的等效菜单选项? 任何帮助将不胜感激。 最佳答案 嗯,我发现这个有用的论坛帖子: https:
我制作了一个程序来从我的 github 上托管的公共(public)存储库中提取数据。克隆一个项目工作得很好(无论如何我都是这样做的),但我一直在努力让它工作以提取所有内容,一旦你删除一个文件,它不再
哪个比另一个更可取,为什么?如果我在提交之前 pull ,其他开发人员所做的更改是否与我当前正在处理的内容 merge ?如果是这样,那意味着这个更可取? 最佳答案 最好先提交。 pull 而不提交可
我对使用 git 在团队中工作还很陌生。 我从“origin/master”开始。 首先我创建了一个新分支feature/26062018-offline-seite_ef。 我添加了提交。 我检查了
这个问题在这里已经有了答案: Retrieve specific commit from a remote Git repository (11 个答案) 关闭 9 年前。 我在本地创建一个空的新存
我开始在 Github 上使用新的 pull 请求草案功能,但我想知道在我不小心发出 pull 请求的情况下是否可以将合法的 pull 请求转换回 pull 请求草案。 最佳答案 如前所述on Twi
我是一名优秀的程序员,十分优秀!