gpt4 book ai didi

python - Memcached 中的 GAY 聊天数据持久化

转载 作者:行者123 更新时间:2023-11-30 23:59:29 24 4
gpt4 key购买 nike

我正在为 Google App Engine 网站编写聊天功能(例如 Faceboook.com)。我需要一种方法来跟踪用户有哪些新消息。我目前正在尝试使用 Memcache:

class Message():
def __init__(self, from_user_key, message_text)
self.from_user_key = from_user_key
self.message_text = message_text

class NewMessages():
def __init__(self):
self.messages = []
def add_message(self, message):
self.messages.append(message)
def get_messages(self):
return self.messages
def messages_sent(self):
self.messages = [] #Clear all messages

def ChatUserManager():
def load(user_key):
manager = memcache.get("chat_user_%s" % user_key)
if manager is not None:
return manager
else:
manager = ChatUserManager(user_key)
memcache.set("chat_user_%s" % user_key, manager)
return manager
def save(self):
memcache.set("chat_user_%s" % user_key, self)
def __init__(self, user_key):
self.online = True
self.new_messages = NewMessages()
self.new_data = False
self.user_key = user_key
def recieve_message(self, message):
self.new_data = True
self.new_messages.add_message(Message(from_user_key, message_text))
def send_message(self, message):
to_manager = ChatUserManager.load(message.from_user_key)
to_manager.recieve_message(message)
def client_receive_success(self):
self.new_data = False
self.new_messages.messages_sent()

此聊天是用户对用户的聊天,例如 Facebook 或 IM session ,而不是群聊。

每个用户将使用 ajax 轮询一个 url,以每 x 秒获取发送给他们的新消息。聊天管理器将加载到该页面 (ChatUserManager.load(user_key)) 并检查新消息。当消息发送时,管理器将被告知消息已发送(manager.client_receive_success()),然后保存回内存缓存(manager.save())。

当用户在 javascript 客户端中发送消息时,它会向某个 url 发送 ajax 请求。该url将加载客户端的UserChatManager并调用.send_message(Message(to_user_key, message_string)))。

我担心这个模型的实用性。如果所有内容都在内存缓存中,如何在不同页面之间同步?

有更好的方法吗?

我承认我还不是Python专业人士,所以代码可能不是很Pythonic,我是否缺少任何最佳实践?

最佳答案

问题不在于如何在“页面”之间共享数据,而在于使用 memcache 将如何影响服务的可用性。

没有与内存缓存中的数据持久性相关的保证:某一时刻还存在,另一时刻可能不存在。

关于python - Memcached 中的 GAY 聊天数据持久化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2303751/

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