refactor!: Merge redis_socketio and redis_queue

- realtime communication uses pub-sub and no storage. So using same
  redis server for both should be just fine.
- This is how FC works since quite a lot of time. We haven't seen any
  problem so far.
This commit is contained in:
Ankush Menat 2023-06-10 19:27:43 +05:30 committed by Ankush Menat
parent 828490e01a
commit 3414c0d063
5 changed files with 9 additions and 10 deletions

View file

@ -446,9 +446,9 @@ function run_build_command_for_apps(apps) {
async function notify_redis({ error, success, changed_files }) { async function notify_redis({ error, success, changed_files }) {
// notify redis which in turns tells socketio to publish this to browser // notify redis which in turns tells socketio to publish this to browser
let subscriber = get_redis_subscriber("redis_socketio"); let subscriber = get_redis_subscriber("redis_queue");
subscriber.on("error", (_) => { subscriber.on("error", (_) => {
log_warn("Cannot connect to redis_socketio for browser events"); log_warn("Cannot connect to redis_queue for browser events");
}); });
let payload = null; let payload = null;
@ -482,9 +482,9 @@ async function notify_redis({ error, success, changed_files }) {
} }
function open_in_editor() { function open_in_editor() {
let subscriber = get_redis_subscriber("redis_socketio"); let subscriber = get_redis_subscriber("redis_queue");
subscriber.on("error", (_) => { subscriber.on("error", (_) => {
log_warn("Cannot connect to redis_socketio for open_in_editor events"); log_warn("Cannot connect to redis_queue for open_in_editor events");
}); });
subscriber.on("message", (event, file) => { subscriber.on("message", (event, file) => {
if (event === "open_in_editor") { if (event === "open_in_editor") {

View file

@ -1,7 +1,6 @@
# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and contributors # Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and contributors
# License: MIT. See LICENSE # License: MIT. See LICENSE
import os
from contextlib import suppress from contextlib import suppress
import redis import redis
@ -109,12 +108,12 @@ def emit_via_redis(event, message, room):
def get_redis_server(): def get_redis_server():
"""returns redis_socketio connection.""" """returns redis connection for sending realtime events."""
global redis_server global redis_server
if not redis_server: if not redis_server:
from redis import Redis from redis import Redis
redis_server = Redis.from_url(frappe.conf.redis_socketio or "redis://localhost:12311") redis_server = Redis.from_url(frappe.conf.redis_queue or "redis://localhost:12311")
return redis_server return redis_server

View file

@ -3,7 +3,7 @@ from urllib.parse import urlparse
from frappe import get_conf from frappe import get_conf
REDIS_KEYS = ("redis_cache", "redis_queue", "redis_socketio") REDIS_KEYS = ("redis_cache", "redis_queue")
def is_open(ip, port, timeout=10): def is_open(ip, port, timeout=10):

View file

@ -38,7 +38,7 @@ function get_conf() {
return conf; return conf;
} }
function get_redis_subscriber(kind = "redis_socketio", options = {}) { function get_redis_subscriber(kind = "redis_queue", options = {}) {
const conf = get_conf(); const conf = get_conf();
const host = conf[kind] || conf.redis_async_broker_port; const host = conf[kind] || conf.redis_async_broker_port;
return redis.createClient({ url: host, ...options }); return redis.createClient({ url: host, ...options });

View file

@ -181,7 +181,7 @@ io.on("connection", function (socket) {
}); });
socket.on("open_in_editor", (data) => { socket.on("open_in_editor", (data) => {
let s = get_redis_subscriber("redis_socketio"); let s = get_redis_subscriber("redis_queue");
s.publish("open_in_editor", JSON.stringify(data)); s.publish("open_in_editor", JSON.stringify(data));
}); });
}); });