首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >调用azure-devops时的超时

调用azure-devops时的超时
EN

Stack Overflow用户
提问于 2019-09-09 09:46:25
回答 2查看 2K关注 0票数 1

我有一个nodejs,它使用包azure-。我的api正在调用azure,在每次调用时都会抛出使用PAT的包来获取令牌。我发布了天蓝色的版本,获得了释放状态,.

它工作得很好,但在某些请求下,我得到了一个超时:

错误:连接ETIMEDOUT 13.107.42.18:443

我重试相同的查询,并且不需要任何超时就可以获得信息。

有人有主意,根本原因,.如何解决这个问题。

提前感谢

这里是一个调用以获取发布状态的示例。

首先,我有一个基于路径获取连接令牌的方法:

代码语言:javascript
复制
public async azureDevOpsConnectWebApi(): Promise<vm.WebApi> {
    this._authentificationHandler = vm.getPersonalAccessTokenHandler(this.PAT);

    let option = null;
    // Force the non usage of proxy in local environment
    if (InfraPortalConfig.ENVIRONMENT === InfraPortalConstant.LOCAL_ENVIRONMENT) {
        option = {
            allowRetries: true,
            maxRetries: 20,
            proxy: {
                proxyUrl: '',
                proxyUsername: '',
                proxyPassword: '',
                proxyBypassHosts: [
                    'visualstudio\.com',
                    'azure\.com'
                ],
            },
            ignoreSslError: true
        };
    }
    this._vstsWebApiConnect = new vm.WebApi(this.AZURE_DEV_OPS_URL, this._authentificationHandler, option);
    return this._vstsWebApiConnect;
}`

在当地,我是代理的幕后黑手。因此,我将属性设置为通过传递visualstudio.comazure.com的代理。

我有另一个获取令牌并调用api以获得发布的方法:

代码语言:javascript
复制
 public async getRelease(projectName: string, releaseDefinitionId: number): Promise<releaseInterface.Release> {
    const _self = this;
    try {
        const vstsWebApiConnect: vm.WebApi = await AzureDevOpsHelper.getInstance().azureDevOpsConnectWebApi();
        const releaseApiConnect: releaseApi.IReleaseApi = await vstsWebApiConnect.getReleaseApi();
        const release: releaseInterface.Release = await releaseApiConnect.getRelease(projectName, releaseDefinitionId);
        return release;
    } catch (error) {
        LogUtils.Instance.error(`** AzureDevOpsReleaseHelper - getRelease ${projectName} - ${releaseDefinitionId}: ${error}`);
        throw error;
    }
}

它工作了10次,但突然间我暂停了1,2,5次,没有任何改变,它又起作用了.

您能给出一个直接调用azure操作的示例,以获得发布信息或排队查询相关信息吗?或者参考大小,我没有发现任何nodejs调用。

非常感谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-09-12 17:00:44

从评论和@Hugh Lin - MSFT的回答来看,看起来Azure-DevOps-Node-Api有一个问题,@Mattious要求使用API而不是instead库。下面的代码片段通过PAT连接到azure-DevOps api并获取所有构建:

代码语言:javascript
复制
const axios = require("axios");

const PAT  = 'YOUR PAT'
const azureDevOpsURL = 'azureDevOpsURL'

const hash = Buffer.from(`:${PAT}`).toString("base64");
const Basic = "Basic " + hash;
try {
    axios
    .get(`${azureDevOpsURL}/_apis/build/builds?api-version=5.1`, {
        headers: {
        "Content-Type": "application/json",
        Authorization: Basic
        }
    }).then(r=>console.log(r.data))
} catch (error) {
    console.log(error.message);
}
票数 1
EN

Stack Overflow用户

发布于 2019-09-10 10:34:17

下面是具有相同超时问题的类似的问题

可能导致问题的一件事是,如果代理能够以多快的速度消耗数据(而且开发机器比宿主代理更快地吸收数据,那么就会出现I/O瓶颈)。您可能已经接近超时,然后瓶颈会将其推到边缘。这是一个在这个问题上的贡献者的想法,但不确定。

作为一种解决方法,您可以尝试设置一个更高的超时,并查看这是否修复了它。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57851529

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档