gpt4 book ai didi

heroku - Heroku 上的 graphql-redis-subscriptions 无法始终如一地工作

转载 作者:IT王子 更新时间:2023-10-29 06:16:15 25 4
gpt4 key购买 nike

我们在节点 graphql 服务器上使用订阅。最近加了集群能力,用Redis做pubsub。在我的本地环境中,一切都很好。当我第一次上传到 heroku 并使用他们的 Redis 插件时,我看到它显示了一个突变,但下一次却没有。几次尝试后,它再次起作用(50% 起作用)。

import { RedisPubSub } from 'graphql-redis-subscriptions';
import Redis from 'ioredis';

let REDIS_URL = process.env.REDIS_URL || 'redis://127.0.0.1:6379';

const options = {
retryStrategy: times => {
// reconnect after
return Math.min(times * 50, 2000);
}
};

const pubsub = new RedisPubSub({
publisher: new Redis(REDIS_URL, options),
subscriber: new Redis(REDIS_URL, options)
});

这是我在日志中得到的错误

Aug 22 16:06:11 service-staging app[web] Error (node:76) UnhandledPromiseRejectionWarning: Error: Connection in subscriber mode, only subscriber commands may be used
Aug 22 16:06:11 service-staging app[web] info at Redis.sendCommand (/app/node_modules/ioredis/built/redis/index.js:570:24)
Aug 22 16:06:11 service-staging app[web] info at DatastoreShim.applySegment (/app/node_modules/newrelic/lib/shim/shim.js:1424:20)
Aug 22 16:06:11 service-staging app[web] info at _applyRecorderSegment (/app/node_modules/newrelic/lib/shim/shim.js:1015:20)
Aug 22 16:06:11 service-staging app[web] info at Redis._doRecord (/app/node_modules/newrelic/lib/shim/shim.js:994:17)
Aug 22 16:06:11 service-staging app[web] info at Redis.wrapper [as sendCommand] (/app/node_modules/newrelic/lib/shim/shim.js:965:24)
Aug 22 16:06:11 service-staging app[web] info at Redis.publish (/app/node_modules/ioredis/built/commander.js:124:21)
Aug 22 16:06:11 service-staging app[web] info at RedisPubSub.<anonymous> (/app/node_modules/graphql-redis-subscriptions/src/redis-pubsub.ts:64:31)
Aug 22 16:06:11 service-staging app[web] info at step (/app/node_modules/graphql-redis-subscriptions/dist/redis-pubsub.js:32:23)
Aug 22 16:06:11 service-staging app[web] info at Object.next (/app/node_modules/graphql-redis-subscriptions/dist/redis-pubsub.js:13:53)
Aug 22 16:06:11 service-staging app[web] info at /app/node_modules/graphql-redis-subscriptions/dist/redis-pubsub.js:7:71
Aug 22 16:06:11 service-staging app[web] info at new Promise (<anonymous>)
Aug 22 16:06:11 service-staging app[web] info at __awaiter (/app/node_modules/graphql-redis-subscriptions/dist/redis-pubsub.js:3:12)
Aug 22 16:06:11 service-staging app[web] info at RedisPubSub.publish (/app/node_modules/graphql-redis-subscriptions/dist/redis-pubsub.js:76:16)
Aug 22 16:06:11 service-staging app[web] info at publish (/app/src/resolvers/action.js:435:18)
Aug 22 16:06:11 service-staging app[web] info (node:76) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 9)

当我运行突变时,我应该看到它出现在监听订阅中。

另外,附带说明一下,如果我将实例数设置为 1 或 2,我总是会收到错误消息。 3个或更多我至少得到第一个突变和以下突变的一半。

最佳答案

在经历了很多个人的痛苦和痛苦之后,我让它运行起来了。我删除了 Heroku Redis 插件并将其替换为 Redis Cloud 插件。一切如预期!

关于heroku - Heroku 上的 graphql-redis-subscriptions 无法始终如一地工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57580352/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com