Articles of python

缓慢的Memcached:平均10ms的memcached`get`

我们使用Newrelic来衡量我们的Python / Django应用程序的性能。 Newrelic报告说,在我们的系统中,“Memcached”平均需要12ms来响应命令。 深入到前十几个Web视图(按请求数),我可以看到一些Memcache get占用了30ms ; 我找不到一次使用Memcache get返回时间不到10ms 。 有关系统架构的更多细节: 目前我们有四个应用服务器,每个应用服务器都有一个memcached成员。 所有四个memcached成员都参与一个memcache群集。 我们正在云托pipe提供商上运行,所有stream量都在“内部”networking上运行(通过“内部”IP) 当我从一个应用程序服务器ping到另一个应答在~0.5ms Memcached的响应时间不是10ms吗? 据我所知,如果你认为“Memcache太慢”,那么“你做错了” 。 那么我做错了吗? 以下是memcache-top命令的输出: memcache-top v0.7 (default port: 11211, color: on, refresh: 3 seconds) INSTANCE USAGE HIT % CONN TIME EVICT/s GETS/s SETS/s READ/s WRITE/s cache1:11211 37.1% 62.7% 10 5.3ms 0.0 73 9 3958 84.6K cache2:11211 42.4% 60.8% 11 […]

在ubuntu 11.04上安装supervisord时出现错误。 有任何解决这个问题的方法吗?

# aptitude install supervisor The following NEW packages will be installed: python-medusa{a} python-meld3{a} supervisor 0 packages upgraded, 3 newly installed, 0 to remove and 0 not upgraded. Need to get 0 B/290 kB of archives. After unpacking 1,552 kB will be used. Do you want to continue? [Y/n/?] Y Selecting previously deselected package python-medusa. (Reading […]

用Puppet部署Python代码

我试图为我的Web应用程序实现一个基于Puppet的部署系统。 该应用程序包含几个服务(几个Web服务器:基于Django和Tornado的以及基于Celery的工作者)。 他们住在不同的git仓库,在github上托pipe。 我已经使用厨师为我以前的项目。 在厨师的情况下,部署这样的事情会很容易:我只是使用git资源为这个特定的节点检出必要的代码,并设置其他的东西。 但是,我不明白它是如何在Puppet中完成的。 我没有在文档中findgittypes。 我尝试过使用谷歌search,但从我发现似乎检查和更新从木偶git代码是不是一个平常的任务。 显然,我假设的工作stream对于Puppet来说有点不寻常。 我可以尝试别的。 使用Puppet部署这些应用程序的自然方式是什么?

PIP不安装到virtualenv目录

我正试图安装Django到已经存在的virtualenv。 按照pip-install网站上列出的说明,我从SSH运行以下命令。 name@server:~$ . myenv.env/bin/activate (myenv.env)nam@server:~$ pip install django 然而,在安装的底部,我看到这个: creating /usr/local/lib/python2.7/dist-packages/django error: could not create '/usr/local/lib/python2.7/dist-packages/django': Permission denied 它似乎试图将其安装到全球目录。 我没有sudo权限。 我在这里做错了什么? 更新:$ PATH = /var/django/myenv.env/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games

如何处理20k并发持久连接

我试图devise一个体系结构来处理大量的TCP套接字连接,我对这个架构的限制有所怀疑。 我将不得不处理大约20k个并发 TCP连接,这些连接是长连接的,它们将长时间保持连接状态,并且会每分钟发送一次数据。 使用线程是没有问题的,因为20k线程会使系统资源不足。 我打算使用gevent来处理这种并发连接数量,甚至使用haproxy和2个服务器(w / gevent)来处理每个10k连接。 这有道理吗? 有没有人有一些build议,或有一些使用10K +连接gevent的经验? 有没有人有处理这些连接的硬件要求的想法? 我看到了一些基准testing ,显示了5k并发连接上gevent的连接超时问题,对于我的问题来说这不是很有希望。 注意 :我已经阅读了关于C10k问题和“百万用户彗星应用程序”上的build议。

如何告诉木偶只有安装使用皮普如果文件不存在

我正在使用Puppet来使用pip来安装一些Python包。 我使用Puppet 2.7,所以我的包声明看起来像这样: package { "carbon": require => Class["graphite::prereqs::install"], ensure => latest, provider => pip, } 问题是这个软件包和graphite-web软件包似乎都有一个bug,可以使用pip多次安装相同的版本。 所以如果我多次inputsudo pip install carbon ,每次都会安装pip。 我相信这是一个包的错误。 这个错误似乎也混淆了木偶,因为每次我提供我的系统, carbon和graphite-web重新安装。 因此,我想知道是否有办法解决这个明显的包装错误。 我已经尝试了以下内容: package { "carbon": require => Class["graphite::prereqs::install"], ensure => latest, provider => pip, creates => "/opt/graphite/bin/carbon-cache.py", } …但我不能使用创build。 有没有另外一种方法可以告诉包声明在安装包之前查找文件?

我怎样才能在Windows中创build一个文件的多个编号副本?

我有一个名为poll001.html的文件,需要创build100个增量命名的副本(即poll002.html,poll003.html …等)。 我知道这是愚蠢的,但这是老板想要的。 任何build议这与脚本,命令行或Python? 再次,对不起,这是一个荒谬的要求。

检查python脚本中的pipe理权限

如何检查我的Python脚本运行在BSD类似的操作系统下的pipe理员权限(sudo)? 需要显示用户友好的警告,以便在没有pipe理员权限的情况下执行。

从networking连接读取时,进程无限期挂起

更新如下: 我在一个不相关的脚本上经历了类似的问题,在不同的数据中心的Debian虚拟机上。 这看起来像这里描述的问题(和像问这个问题的人一样,我没有在服务器前configuration代理)。 与以下描述的主要区别在于,当我附加到挂起的进程时,我看到一个调用recvfrom而不是read : $ strace -p 17527 Process 17527 attached – interrupt to quit recvfrom(3, 不过Python并没有被代理的印象: >>> import os; print os.getenv("HTTP_PROXY"), os.getenv("http_proxy") None, None 所以我仍然难住。 可悲的是,这个相关的问题也没有最终的答案。 (我也想知道这个问题是否是相关的,但是S3似乎不太可能不尊重Connection: close headers。) 我有几个Debian(Wheezy,x86_64)服务器都显示以下行为: 所有服务器都有一组cron作业,其中包括从S3中提取数据。 这些通常运行良好,但偶尔ps aux显示,几小时或几天前开始的一些工作仍在运行,并没有完成干净。 使用strace -p <pid>检查它们显示,在所有情况下,该进程都挂在一个读取命令上。 例如,我刚刚检查的一个进程的输出是: $ strace -p 12089 Process 12089 attached – interrupt to quit read(5, 检查打开的文件描述符给了我这个: $ sudo lsof […]

“点子安装碳”看起来像它的工作,但点后不同意

我正在尝试使用pip来安装与统计信息收集相关的软件包carbon 。 当我运行pip install carbon ,它看起来像一切正常。 但是, pip并不确定这个软件包是否已经被安装。 (这最终会导致麻烦,因为我使用Puppet,并且有一个规则来使用pip来安装碳,当puppet要求pip “这个软件包已经安装了吗?”它会说“不”,然后重新安装它。 我怎么知道是什么阻止点子识别这个安装的成功? 以下是常规安装的输出: root@statsd:/opt/graphite# pip install carbon Downloading/unpacking carbon Downloading carbon-0.9.9.tar.gz Running setup.py egg_info for package carbon package init file 'lib/twisted/plugins/__init__.py' not found (or not a regular file) Requirement already satisfied (use –upgrade to upgrade): twisted in /usr/local/lib/python2.7/dist-packages (from carbon) Requirement already satisfied (use –upgrade to […]