我们有4个应用程序服务器和一个运行我们的Python应用程序的负载平衡。 每个应用程序服务器都有32个超线程核心,因此Tornado部署指南build议我们每个运行64个线程。 我们也使用supervisord来pipe理所有的线程。 这工作正常,我们遇到的问题是,当我们必须部署更新,目前部署新应用程序的过程是一个shell脚本,它执行以下操作; 检出我们的GIT回购的/ deploy分支 (一些与CDN无关的东西) SCP将文件分别发送到4台服务器 重新启动supervisord(所以应用程序加载新的代码) 这是非常低效的,总共需要大约20秒。 重启单独的龙卷风线程需要一秒左右的时间,但问题是,如果我们做出任何重大更改,负载平衡器将根据重新启动的哪个阶段,它select的线程在旧的和新的应用程序之间切换(总共有256个负载平衡器可以连接到的可能的实例),所以我们必须把站点closures30秒,有时更长,以获得正确版本的应用程序。 有没有更好的方法呢? 我听说过Fabric和其他一些可以使用的工具,但是它们比我们现在做的更有效吗? 理想情况下,我们需要在5秒钟之内将所有线程重新启动到新版本,即使涉及临时占用站点。 信息(如果它是有用的); 所有的服务器都是RHEL 5.5,负载均衡器是Barracuda 640。
我使用nginx作为一个烧瓶应用程序的代理,以uwsgi作为中间件。 这是我testing应用程序的nginxconfiguration。 server { listen 80; server_name test.myapp.com www.test.myapp.com; charset utf-8; client_max_body_size 250M; location / { try_files $uri @testapp; } location @testapp { include uwsgi_params; uwsgi_pass unix:/tmp/testapp_uwsgi.sock; } location /forecaster/components/ { alias /opt/test/client/app/components/; } } 我很确定,虽然nginx实际上并没有提供静态文件,即使我注释掉了location块,文件也得到了某些东西。 我在nginx日志中看到了200个,在uWsgi日志中看到了200个。 你怎么知道哪一个服务于静态文件? 我想烧瓶应用程序可以为他们服务呢? / opt / test / client / app / components /肯定存在,并且对其他人可读。 有没有办法强制uwsgi不处理这些请求?
我可能会错过一些东西,或者这可能是错误的布局支柱数据的方式。 我想通过第二层次的支柱数据。 支柱例子: repo: Option1: version1: display_name: "abcde" version2: display_name: "fghij" Option2: version1: display_name: "klmn"` SLS: {% for version, versioninfo in salt['pillar.get']('repo', {}).iteritems() %} {{ versioninfo[] }}{{ versioninfo[]['display_name'] }} {% endfor %}` 我想要返回每个版本和显示名称,有效地忽略了第一级的支柱数据。 显然上面的忍者不行,但是有没有办法做到这一点?
我正在尝试使用pip在virtualenv中安装pythonpandas包。 在我的开发机器上安装正确,但现在我正在尝试在服务器上,它得到了这么多,似乎卡住了: warnings.warn(LapackSrcNotFoundError.__doc__) /apps/PYTHON/2.7.3/lib/python2.7/distutils/dist.py:267: UserWarning: Unknown distribution option: 'define_macros' warnings.warn(msg) non-existing path in 'numpy/distutils': 'site.cfg' non-existing path in 'numpy/lib': 'benchmarks' Could not locate executable gfortran Could not locate executable f95 Found executable /apps/modules/wrappers/fortran/ifort 顶部显示运行在46%cpu的ifort。 有没有什么办法可以告诉如果这是工作正常(我可以检查它正在更新的文件例如),或者如果它卡在一个循环? 到目前为止已经运行了40分钟。
这是一个双pipe齐下的问题…问题的上下文是获得一个很好的Python 3.1.1版本,用于构build和运行mod_wsgi。 有关共享库为什么是个好主意的更多信息,请参阅此文档 。 使用–enable-shared构buildPython有什么影响? 我观察到,当我build立它没有 – 共享,python二进制是〜16MB -rwxr-xr-x 2 root root 1638104 Aug 17 12:29 python3.1 使用–enable-shared,python二进制文件是15K。 -rwxr-xr-x 2 root root 15860 Oct 5 22:34 python3.1 一般来说,这对Python的“正常”操作有什么作用? 所有的脚本仍然运行相同吗? 任何性能影响? 你可以,还是可取的,有(共享和静态)? 任何想法如何解决这个错误干净? 注意:build立在干净的RHEL 5.3 64位安装上。 在使用./configure –enable-shared构buildPython 3.1.1后,出现以下错误: [root@test ~]# python3 python3: error while loading shared libraries: libpython3.1.so.1.0: cannot open shared object file: No such […]
是否可以为一个shell命令设置一个ENVvariables(即,在命令执行后立即过期)? 例如: export VERSIONER_PYTHON_PREFER_32_BIT=yes winpdb 我想设置我的系统使用32位Python只是这个命令,然后回到64位。 也许类似 VERSIONER_PYTHON_PREFER_32_BIT=yes; winpdb 谢谢!
我有一个python脚本,我想通过crontab运行。 我的crontab看起来像这样: 5,20,35,50 * * * * /var/www/django-apps/callreport/util.py 该脚本设置为parsing一堆平面文件,并将信息粘贴到MySQL数据库,然后删除文件。 它从命令行运行良好,数据被复制到数据库,平面文件被删除。 但是设置为cron作业运行时没有任何反应。 过去,当一个cron作业失败时,我会收到一封邮件,但是我没有收到任何反馈,而且我仍然通过在这个盒子上做系统pipe理员来感觉我的方式。 我究竟做错了什么?
问题是:我有一个脚本定期通过cron 作为root运行 ,但是我想通过网页给人们一种asynchronous启动的方式。 (脚本将被写入,以确保它不会运行重叠的实例等。) 我不需要用户login或有一个帐户,他们只需点击一个button,如果脚本准备好运行它将运行。 用户可以为脚本select参数(大量过滤为input),但为了简单起见,我们会说他们只是有button来select按下。 作为一个简单的testing,我已经在cgi-bin中创build了一个Python脚本。 将它chown到root:root,然后将“chmod ug +”应用到它没有得到所需的结果:它仍然认为它有Web服务器帐户的有效组…从我可以告诉这不是允许。 我读过用一个编译好的cgi程序包装它会做这个工作,所以我创build了一个调用我的脚本(它的权限恢复正常)的C包装器,并给了可执行文件根权限和setuid位。 这工作…脚本运行,就像根运行它。 我的主要问题是,这是正常的(需要二进制包装完成工作),这是做到这一点的安全方式? 这不是面向世界的,但我仍然想学习最佳实践。 更广泛地说,我经常想知道为什么编译后的二进制文件在实践中比脚本更“可信”呢? 我想你会相信一个文件是一个神秘的二进制可读的文件。 如果攻击者可以编辑一个文件,那么你已经遇到了麻烦,如果是一个你不能轻易检查的文件。 简而言之,我希望这是在这个基础上的另一种方式。 你的想法?
我尝试使用Python的HP-ILO模块连接到HP刀片服务器(HP BladeSystem c3000机箱)。 obj=hpilo.Ilo('172.8.2.29', login='Administrator', password='<redacted>', timeout=60, port=443, protocol=None, delayed=False) 使用python库创build一个HP-ILO对象,并尝试获取资产标签的详细信息,我得到了下面的错误。 hpilo.IloError:远程返回的伪造数据,也许它不是一个iLO Python API: https : //pythonhosted.org/python-hpilo/ilo.html 我可以通过浏览器和SSH客户端连接服务器,但我无法通过RIBCL脚本或使用Python连接服务器。
我有几个虚拟主机在redhat上的相同的Apache实例下configuration: Apache的2.2.15 mod_wsgi-3.5用默认的系统python-2.6编译 对于每个虚拟主机, WSGIScriptAlias设置都指向激活虚拟环境的python文件: activate_this = '/path_to_the_virtualenv/bin/activate_this.py' execfile(activate_this, dict(__file__=activate_this)) 现在,我打算将其中一个项目升级到python-2.7,另一个项目是python-3.x。 我知道我可以有不同的虚拟环境,单独的python沙箱。 所以,python方面一切都很好。 问题是:是否有可能在相同的apache + mod_wsgi实例下为不同的apache虚拟主机使用不同的python版本? 如果不是,那么最好的select是什么? 有一个相关的WsgiPythonHome设置,但它是在“服务器configuration”上下文中全局定义的,而不是每个虚拟主机。 另外,mod_wsgi是为特定的python版本编译的,所以我不确定它可以处理这种情况。