轮询时Mailgun Event API不返回电子邮件

时间:2019-07-19 19:47:42

标签: request mailgun long-polling

我创建了一个允许我从mailgun帐户中提取信息的功能。该函数本身可以工作,但是我们进入了竞争状态,在Mailgun存储引擎中可以访问事件之前,已经发生了对Event API的请求。为了解决这个问题,我们已经开始轮询电子邮件。代码如下所示。

我们遇到的问题是,即使在mailgun仪表板中显示为已接受/已发送,电子邮件也永远不会返回响应。每次我们都会收到200条响应,但是主体项目始终返回为空数组。我们可以对同一端点执行ping操作的频率是否有限制?我不确定为什么如果我们将响应调用超时30秒而不是连续轮询事件端点,为什么会起作用。

Cypress.Commands.add('get_target_email', (email, subject) => {
 const currentTime = moment().unix();
  const oldTime = moment()
    .subtract(60, 's')
    .unix();

  const options = {
    url: Cypress.env('MAILGUN_EVENTS_API_URL'),
    auth: {
      user: `api`,
      pass: Cypress.env('MG_API_KEY'),
    },
    method: 'GET',
    qs: {
      event: 'accepted',
      recipient: email,
      begin: oldTime,
      end: currentTime,
      limit: 10,
      subject,
    },
  };

  const req = () => {
      cy.request(options).then(res => {
      if (res.body.items.length > 0) {
        return res.body;
      }
      req();
    });
  };

  return req();
});
…

对于每个请求,我都会得到200个响应。但是响应的主体返回一个空数组。如果我转到mailgun仪表板,则可以看到该电子邮件已被接受并发送。

0 个答案:

没有答案