memcached 使用 Django 监听 UDP

2024-03-07

Question: 我无法获得memcached正在听UDP, 上班 (get set delete)与姜戈。


我只让 memcached 监听UDP 11211,正如我在上一个问题 https://stackoverflow.com/questions/36055900/get-set-memcached-listening-on-udp-using-python。到目前为止我已经尝试过:

1.设置CACHES to use python-memcachedPython 绑定。 get 和 set 不适用于简单的设置,即'LOCATION': '127.0.0.1:11211',所以尝试指定udp明确地(使用这个mention http://sendapatch.se/projects/pylibmc/reference.html#pylibmc.Client作为理由):

CACHES = {
    'default': {
        'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
        'LOCATION': 'udp:127.0.0.1:11211',
        'TIMEOUT': None,
    }
}

gave:

ValueError: Unable to parse connection string: "udp:localhost:11211"

2.设置CACHES to use pylibmcPython 绑定:

CACHES = {
    'default': {
        'BACKEND': 'django.core.cache.backends.memcached.PyLibMCCache',
        'LOCATION': 'udp:127.0.0.1:11211',
        'TIMEOUT': None,
    }
}

服务器运行良好 - 进一步验证:

>>> import django
>>> from django.core.cache import cache
>>> cache.set('udp_key', 12)
>>> cache.get('udp_key')
Traceback (most recent call last):
  File "<console>", line 1, in <module>
  File "/usr/lib/python2.7/site-packages/django/core/cache/backends/memcached.py", line 84, in get
    val = self._cache.get(key)
NotSupportedError: error 28 from memcached_get(:1:udp_key): ACTION NOT SUPPORTED

P.S.不要将其设置为 memcachedTCP vs UDP debate


类似的问题——get() set() memcached 使用 Python 监听 UDP https://stackoverflow.com/questions/36055900/get-set-memcached-listening-on-udp-using-python


据我所能探索的图书馆libmemcached http://libmemcached.org/ that pylibmc http://sendapatch.se/projects/pylibmc/使用不支持get与 UDP 的操作。

我已经追踪到缓存调用get up to libmemcached我发现下面的代码 http://bazaar.launchpad.net/~tangent-trunk/libmemcached/1.2/view/head:/libmemcached/get.cc:

    ...
    if (memcached_is_udp(ptr))
    {
      return memcached_set_error(*ptr, MEMCACHED_NOT_SUPPORTED, MEMCACHED_AT);
    }
    ...

这与你的错误一致pylibmc's get方法映射到libmemcached's memcached_get具有上述代码的文件中的方法(/libmemcached/get.cc).

我在自己的机器上安装并配置了相同的环境,并且得到了相同的结果。

尽管如此,set正如我观察到的那样,操作似乎运行得很好内存缓存在调试模式下。

我还尝试提供不同的位置((协议+IP+端口)由; in the LOCATION字段)用于缓存混合 TCP/UDP,但库也不支持混合协议并返回错误。

    CACHES = {
        'default': {
            'BACKEND': 'django.core.cache.backends.memcached.PyLibMCCache',
            'LOCATION': 'udp:127.0.0.1:11211;127.0.0.1:11211',
            'TIMEOUT': None,
        }
    }

所有先前的事实均已得到文件证实libmemcached http://docs.libmemcached.org/memcached_behavior.html?highlight=udp#MEMCACHED_BEHAVIOR_USE_UDP.

使用的选项django.core.cache.backends.memcached.MemcachedCache作为后端也被丢弃,因为它只使用 TCP 套接字(SOCK_STREAM) 用于连接到内存缓存.

UPDATE: python-memcached-udp https://pypi.python.org/pypi/python-memcached-udp/现在是一个 pip 包。它的维护者如果需要,可以添加更多功能 https://github.com/idanmo/python-memcached-udp/issues/3。如果您有兴趣,我们绝对可以致力于使用 UDP 为 Memcached 创建新的 Django 缓存后端。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

memcached 使用 Django 监听 UDP 的相关文章

随机推荐

  • 登录 Groovy 脚本

    我有一个基本的 Groovy 脚本 我希望尽可能简单地创建日志 我希望消息发送到标准输出以及日志文件 并且日志文件中的每个条目都有一个时间戳 我无法使用 Log 表示法 因为它是一个脚本 而且我没有要注入的类 否则我认为这将是理想的 您可以
  • Laravel 验证独特

    我有一个带有唯一列的表 我的表单验证规则如下所示 return Validator make data nameEN gt required string nameHE gt required string address gt requi
  • spring @Transactional 注解

    我有一个抽象类和两个扩展它的子类 我在 spring 配置文件中有以下内容
  • 如何配置 xdebug stacktrace 以链接到 VS Code 中的文件并打开文件

    当 xdebug 提供堆栈跟踪时 它可以创建链接以在文本编辑器中的特定行打开文件 例如 如果安装了 subl 处理程序 以下配置将在 Sublime 中打开文件 xdebug file link format subl open url f
  • 响应式设计 - 适用于智能手机和平板电脑的标准断点/媒体查询

    当您进行响应式设计编码时 智能手机和平板电脑的标准宽度是多少 我查看了不同的网站 但似乎没有找到任何好的标准宽度模板 你们在编码响应式设计时通常对断点 媒体查询做什么 如果有人有适合平板电脑 智能手机等的不同分辨率的好模板 请分享 谢谢 有
  • 如何以编程方式确定 VB 应用程序日志的位置?

    我正在改造一个旧的 vb net 应用程序 使其符合 Vista 中的 LUA 原则 到目前为止 应用程序使用了多种日志记录机制 但核心机制涉及将日志写入到 c temp 如果该文件夹存在 我想用更标准的日志记录机制替换当前的日志记录 这是
  • Dataframe_image OsError:无法在您的计算机上找到 Chrome 可执行文件

    我正在尝试运行我的脚本数据块 using 数据框 图像库来设置我的表格样式 然后将其另存为 png 文件并收到错误OsError 无法在您的计算机上找到 Chrome 可执行文件 Per 文档 https pypi org project
  • 有没有办法在 C++ 函数中获取函数名称?

    我想实现一个函数跟踪器 它可以跟踪函数执行所花费的时间 我有以下相同的课程 class FuncTracer public FuncTracer LPCTSTR strFuncName in m strFuncName 0 T 0 if s
  • SharpSVN 和 C# 问题

    当尝试将 SharpSVN 添加到我的 C 项目时 使用 SharpSVN 相关调用进行编译会出现以下错误 FileLoadException 未处理 混合模式程序集是针对运行时版本 v2 0 50727 构建的 如果没有附加配置信息 则无
  • Jenkins 作业和项目之间的区别

    当我位于 Jenkins 主屏幕上时 我会收到一个链接Create a New Job 当我创建一个新作业并将其称为 新作业 并运行它时 我会得到结果 当我查看结果时 我会收到一个链接Back to Project 当我点击这个时我看到Pr
  • SwiftUI TextField 最大长度

    是否可以设置最大长度TextField 我正在考虑使用处理它onEditingChanged事件 但仅在用户开始 完成编辑时调用 而在用户键入时不会调用 我也阅读了文档 但还没有找到任何东西 有什么解决方法吗 TextField text
  • 如何使用 jQuery 删除周围的 DIV?

    在 Wikispaces 中 当您将目录添加到主要内容区域时 您在该主要内容区域中使用的任何标题 h1 h6 都会自动放置在目录中 并作为锚链接 单击该链接后 带您向下翻页至目录中引用的标题 默认情况下 wikispaces 用 div 包
  • 如何在 r 中创建水平堆积条形图风格的时间序列图

    我想创建一个水平 堆叠条形 类型图 其中日期沿 x 轴运行 我的样本在 y 轴上显示为条形 在下面的简单示例中 我有三个样本 a b c 每个样本包含三个值 0 1 2 我希望水平条根据沿 x 轴的每个时间步长的值进行着色 这样我最终会得到
  • 流媒体 YouTube 视频

    我正在编写一个使用流媒体播放 YouTube 视频的应用程序 第一种方法 我正在使用 GData API 获取视频的 RTSP URL 这是播放 RTSP url 的代码 VideoView mVideoView new VideoView
  • 模式中的表单输入未按要求显示

    我已经阅读了一些相关文章 但没有成功解决我自己的让表单字段按要求显示的问题 也许问题出在外面 但我想分享一下 以防它突出一个独特的案例 这是一个可以完整查看的课堂作业here https futurethang github io Trai
  • Angular 5,具有 3 种状态的 Angular Material 复选框(选中、未选中、不确定)

    我是 Angular 和 Angular Material 的新手 现在我在一些项目中担任支持人员 有一个带有过滤器和一个复选框的网格 用于检查网格中的用户是否处于活动状态 非活动状态或未选择状态 如果只有两个选项 活动 非活动 会更简单
  • 媒体查询最大宽度与视图端口大小或窗口大小有关?

    我想知道媒体查询的最大宽度是否与视图端口大小或窗口大小有关 例如 我有这个媒体查询 media screen and max width 360px 当视口大小为 360px 或窗口大小为 360px 时 此媒体查询会起作用吗 这是视口 这
  • 使用 preg_replace 替换 php 中出现的所有内容

    正则表达式绝对是我的弱点 这个让我完全难住了 我正在构建一个相当基本的搜索功能 我需要能够根据以下模式更改用户输入 Subject 22first set 22 22second set 22 drupal wordpress 期望的输出
  • Selenium 2.42.2 webdriver 与 Firefox 27.0.1 兼容吗? [复制]

    这个问题在这里已经有答案了 Selenium 2 42 2 webdriver 与 Firefox 27 0 1 兼容吗 如果不兼容 那么它与哪个 Firefox 版本兼容 我正在使用 Selenium 2 42 2 网络驱动程序 我写的测
  • memcached 使用 Django 监听 UDP

    Question 我无法获得memcached正在听UDP 上班 get set delete 与姜戈 我只让 memcached 监听UDP 11211 正如我在上一个问题 https stackoverflow com question