cuốn sách gpt4 ai đã làm

python - làm cho máy khách redis chờ trong khi máy chủ chạy tập lệnh lua dài

In lại Tác giả: Hồ Xil Thời gian cập nhật: 2023-11-01 11:24:22 hai mươi bốn 4
mua khóa gpt4 Nike

Tôi có một máy chủ redis phục vụ nhiều khách hàng. Đôi khi máy chủ cần chạy tập lệnh lua và mất khoảng một phút để hoàn thành. Tuy nhiên, trong thời gian này các khách hàng khác nhận được lỗi phản hồi:

redis.Exceptions.ResponseError: BẬN Redis đang bận chạy tập lệnh Bạn chỉ có thể gọi SCRIPT KILL hoặc SHUTDOWN NOSAVE.

Có cách tích hợp nào để yêu cầu khách hàng tiếp tục chờ đợi hoặc thử lại phản hồi này không?
Redis(socket_timeout=9999) Nó dường như không có tác dụng gì về điều này.

câu trả lời hay nhất

Tôi không thể tìm được cách phù hợp nên tôi đã thử một số cách hack:

từ redis nhập Redis

lớp MyRedis(Redis):
lua_retry_time = 120

# ghi đè thực thi để thử lại các lỗi bận
def execu_command(self, *args, **options):
thời gian chờ đợi = 0
nếu không self.lua_retry_time:
trả về super().execute_command(*args, **options)
trong khi wait_time < self.lua_retry_time:
thử:
trả về super().execute_command(*args, **options)
ngoại trừ ResponseError như e:
nếu 'redis bận đang bận' không có trong ''.join(e.args).low():
nâng cao e
if wait_time == 0: # chỉ in một lần
print('Redis đang bận, chờ tới 120 giây...')
thời gian.ngủ(2)
thời gian chờ += 2
trả về super().execute_command(*args, **options)

redis-py Mọi lệnh trong gói đều vượt qua thực thi_lệnh phương pháp này, điều này sẽ bao gồm tất cả. Điều này sẽ thử lại sau mỗi 2 giây trong 120 giây.

Về python - làm cho máy khách redis chờ trong khi máy chủ chạy tập lệnh lua dài, chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/51929278/

hai mươi bốn 4 0
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress