Articles of python

如何告诉uWSGI优先进程到线程进行负载均衡

我已经在具有3个CPU核心的VDS上安装了Nginx + uWSGI + Django。 uWSGI为每个进程configuration6个进程和5个线程。 现在我想告诉uWSGI使用进程进行负载平衡,直到所有进程都忙碌,然后在需要时使用线程。 看来uWSGI更喜欢线程,我还没有find任何configuration选项来改变这种行为。 第一个进程占用了100%的CPU时间,第二个占用了大约20%,另外一个进程大部分都不使用。 我们的网站收到40 r / s。 实际上,即使有3个进程没有线程,通常是处理所有的请求。 但是由于诸如locking共享资源等各种原因,请求处理会不时挂起。在这种情况下,我们有-1个进程。 用户不喜欢等待,然后再次点击链接。 因此,所有进程都会挂起,所有用户都必须等待。 我会添加更多的线程,使服务器更健壮。 但问题可能是pythonGIL。 线程不会使用所有的CPU核心。 所以多个进程在负载平衡方面效果更好。 但是,如果locking共享资源和I / O等待延迟,线程可能会有很大的帮助。 一个进程可能会做很多工作,而其中一个线程被locking。 我不想减less时间限制,直到没有其他解决scheme。 理论上可以用线程来解决这个问题,我不想给用户显示错误信息,或者让他在每个请求中等待,直到没有其他select。

Ubuntu语言环境对Python应用程序不正确

我在Amazon EC2的Ubuntu AMI上安装了NGINX – > UWSGI – > Django(python)堆栈。 访问名称中包含unicode字符的文件时遇到问题。 Django App(Mezzanine)的确切输出是 尝试访问包含path中的Unicode字符的文件,但不知何故当前的语言环境不支持utf-8。 您可能需要将“LC_ALL”设置为正确的值,例如:'en_US.UTF-8'。 现在,当我运行locale命令输出是: LANG=en_US.UTF-8 LANGUAGE=en_US.UTF-8 LC_CTYPE="en_US.UTF-8" LC_NUMERIC="en_US.UTF-8" LC_TIME="en_US.UTF-8" LC_COLLATE="en_US.UTF-8" LC_MONETARY="en_US.UTF-8" LC_MESSAGES="en_US.UTF-8" LC_PAPER="en_US.UTF-8" LC_NAME="en_US.UTF-8" LC_ADDRESS="en_US.UTF-8" LC_TELEPHONE="en_US.UTF-8" LC_MEASUREMENT="en_US.UTF-8" LC_IDENTIFICATION="en_US.UTF-8" LC_ALL=en_US.UTF-8 对我来说,一切都看起来不错,所以接下来我添加了一些代码来打印出生成错误的代码段中的语言环境设置。 其结果是: locale.getdefaultlocale() = (None, None) locale.getpreferredencoding() = 'ANSI_X3.4-1968' sys.getdefaultencoding() = 'ascii' sys.getfilesystemencoding() = 'ANSI_X3.4-1968' 所以这看起来不正确,但我不知道如何解决它。 当我在python shell中运行相同的代码时,一切看起来好多了。 locale.getdefaultlocale() = ('en_US', 'UTF-8') locale.getpreferredencoding() = 'UTF-8' […]

AssertionError与示例testing应用程序与pypy使用uwsgi

我试图让样品pypytesting你好世界应用程序使用uypcgi与pypy运行。 我试图用我的主目录下的pypy插件(使用python uwsgiconfig.py –plugin plugins/pypy )和pypy来构builduwsgi。 http://uwsgi-docs.readthedocs.org/en/latest/PyPy.html 但是,当我使用该命令 ~/uwsgi-2.0.4/uwsgi –plugin ~/uwsgi-2.0.4/pypy –http-socket :9090 –pypy-home ~/pypy-2.2.1-linux64/ –pypy-wsgi uwsgi_pypy_test.wsgi –pypy-lib ~/uwsgi-2.0.4/plugins/pypy/libpypy-c-x86_64_20130524.so 它以OperationalError和AssertionError退出: *** Starting uWSGI 2.0.4 (64bit) on [Wed May 7 11:14:46 2014] *** compiled with version: 4.6.3 on 01 May 2014 10:11:39 os: Linux-3.8.0-35-generic #52~precise1-Ubuntu SMP Thu Jan 30 17:24:40 UTC 2014 nodename: mcp03 machine: x86_64 […]

uwsgi抱怨没有findpython应用程序

看起来像uWSGI应用程序相当普遍,但仍然找不到任何有价值的解决scheme。 我可以使用uwsgi 1.0.3和python2.7在Ubuntu 12.04上工作 这是我的config.ini文件: [uwsgi] uid = www-data gid = www-data pythonpath = /path/to/my/application plugins = python27 module = launcher.py workers = 2 vacuum = True max-requests = 1000000 harakiri = 120 harakiri-verbose = true need-app = true buffer-size = 32768 listen = 200 master-as-root = true max-fd = 10240 #memory-report = true #stats […]

Apache不提供我的Python应用程序

所以这里是我的Apacheconfiguration: LoadModule wsgi_module /usr/lib/apache2/modules/mod_wsgi.so <VirtualHost *:80> ServerAdmin [email protected] ServerName 31.220.49.197 WSGIDaemonProcess ts threads=25 WSGIProcessGroup ts Alias /static /home/email-validator/static WSGIScriptAlias / /home/email-validator/index.wsgi # Set access permission <Directory /> Allow from all Require all granted </Directory> </VirtualHost> 这是我的index.wsgi: import os import sys import site # Add the app's directory to the PYTHONPATH sys.path.append('/home/email-validator') sys.path.append('/home/email-validator/email_validator') os.environ['DJANGO_SETTINGS_MODULE'] = 'email_validator.settings' […]

rabbitmq服务器不接收来自python客户端的消息

我正在尝试发布一个消息给rabbitmq。 这工作在生产环境env与相同的代码,所以我怀疑这是一个configuration问题。 rbqueue = RabbitMQClientQueue('cn-dip-v3', host = rabbitmq_config['host'], username = rabbitmq_config['user'], password = rabbitmq_config['password']) channel = rbqueue.connection.channel() args = {"x-max-priority": 10} channel.queue_declare(queue='cn-dip-v3', durable=True, arguments=args) result = channel.queue_declare(exclusive=True) callback_queue = result.method.queue msgBody = json.dumps({"ohad":123}) # may happen that sendResponseToDal is True but there is no sendResponseToDal method on server side data = {"body":msgBody,"queue_response" : False} if […]

如何在sasl支持下在Openshift上安装libmemcached?

我需要带有sasl支持的libmemcached在Openshift Online上使用Memcached Cloud盒式磁带。 我在旁边做: 1)安装sasl。 curl -LO ftp://ftp.cyrusimap.org/cyrus-sasl/cyrus-sasl-2.1.26.tar.gz tar –xvzf cyrus-sasl-2.1.26.tar.gz cd cyrus-sasl-2.1.26 sh configure –prefix=${OPENSHIFT_DATA_DIR}sasl make make install 2)设置envvariables( 更新:添加“&&导出SASL_PATH”): SASL_PATH = ${OPENSHIFT_DATA_DIR}sasl/lib/sasl2 && export SASL_PATH LD_LIBRARY_PATH=${OPENSHIFT_DATA_DIR}sasl/lib/sasl2/:${LD_LIBRARY_PATH} && export LD_LIBRARY_PATH 3)安装libmemcached curl -L -O https://launchpad.net/libmemcached/1.0/1.0.18/+download/libmemcached-1.0.18.tar.gz tar -xvzf libmemcached-1.0.18.tar.gz cd libmemcached-1.0.18 sh configure –prefix=${OPENSHIFT_DATA_DIR}libmemcached –enable-sasl configuration的结果告诉我: sasl支持:不 但是当我在本地机器上安装时,一切都很好。 也许我应该通过萨斯路,但如何做到这一点? 请帮帮我。

Openstack仪表板上的noVNC控制台在RHEL7上呈现乱码UI

我在RHEL7上运行nova-compute。 OpenStack仪表板的noVNC控制台为具有UI控制台的任何实例呈现乱码UI。 有人可以帮忙吗? 这在RHEL65上工作得很好

为什么我偶尔在python 2.7.9 +中获得SSL:CERTIFICATE_VERIFY_FAILED?

让我开始说,我知道Python 2.7.9的更改来validationSSL证书。 我也知道有几种不同的方式来解决它。 我的问题是,为什么我零星地得到这个错误? 我会想,如果出了什么问题,总是会失败,但这不是我所看到的。 我一直在研究一些使用urllib发出请求的代码,并且无处不在我开始出现以下错误: URLError: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:590)> 在写这个问题时,我隐藏并popup了我的更改(在git中),并且错误停止了。 为什么不一致? 更新:这个错误也发生在Python 3中,但始终如一。

如何在fail2ban中为jail指定多个日志文件?

Heyo, 我使用Ubuntu 15.10和fail2ban 0.9.3。 Apache设置了一堆Apache虚拟主机。 我有我的Apache2日志文件位于子目录中,每个本地主机,例如'/var/log/apache2/vwww_example_vhost_com/和日志文件作为error.log或access.log (或ssl_error.log和ssl_access.log )。 主要的apache2日志文件(localhost和default)位于/var/log/apache2 。 理想情况下,我希望能够通配该子目录,并在该子目录下的任何日志文件中读取fail2ban。 jail.local联机帮助页指出,为了指定多个日志文件,必须在每个日志文件之间放置换行符和空格。 这似乎不适用于通配目录。 以下是其中一个jail的默认configuration: [apache-auth] port = http,https logpath = %(apache_error_log)s enabled = true 目前我已经尝试过: [apache-auth] port = http,https logpath = %(apache_error_log)s /var/log/apache2/*/*error.log enabled = true 带有前导空格的换行符上的辅助日志文件path。 此错误和service fail2ban restart失败,出现一个神秘的(和无用的)错误消息。 这失败了: [apache-auth] port = http,https logpath = /var/log/apache2/*/*error.log enabled = true 试图覆盖%(apache_error_log)s的%(apache_error_log)svariables也失败: [DEFAULT] apache_error_log = […]