您正在部署一个Python应用程序,该应用程序使用自己的virtualenv,而库与系统安装的库不同,您需要尽可能安装这些库。 我问这是因为很明显,二进制文件将会去/usr/local/bin ,而应用程序资产到/usr/local/share/application但是我不知道是否有一个约定那种数据。 你在哪里存储virtualenv? /usr/local/share/application , /srv/application , /var/local/application ?
这个问题最初被问到在stackoverflow byt被发现是脱离主题,下面的文本已经从最初的post更新了新的细节。 我最近购买了一台带有i7处理器的新电脑。 我安装了Fedora 24,还有Python和一些科学编程所需的库,如Numpy和Scipy(Numpy version 1.11.0)。 在安装完所有我需要的之后,我运行了一些testing代码(从这里下载),以评估系统的速度,特别是: test_numpy.py其中包含: #!/usr/bin/env python import numpy import sys import timeit try: import numpy.core._dotblas print 'FAST BLAS' except ImportError: print 'slow blas' print "version:", numpy.__version__ print "maxint:", sys.maxint print x = numpy.random.random((1000,1000)) setup = "import numpy; x = numpy.random.random((1000,1000))" count = 5 t = timeit.Timer("numpy.dot(x, xT)", setup=setup) print "dot:", […]
我正在用Python编写一个事件聚集服务器,使用Nginx + Gunicorn。 系统在1 cpu / 2核心盒(AWS c4.large)上的CPU最大值之前可以扩展到大约300 rps。 增加一个枪炮工或者使用小工,只能在利润率上(约10%)。 响应在1-2ms范围内(事件正被写入磁盘)。 从我的分析看来,gunicorn似乎花费了所有的时间和精力读取socket(在select()调用中是sync.py)。 与此同时,Nginx占据了CPU本身的2-3%左右。 使用UNIX套接字不会更改networking套接字上的性能configuration文件。 由于这些事件非常小(大约200字节),看起来它需要花费过多的努力才能将请求从套接字中取出。 我希望能够批量这些请求有效载荷之前,他们到达gunicorn,但我不知道如何做到这一点。 有什么办法可以减lessgunicorn正在采取的努力/ CPU的数量,并提高每箱的吞吐量?
当通过mod_wsgi提供Django应用程序时,我注意到了一个奇怪的错误。 在我的文档根目录中,我使用LocationMatch指令将/admin目录限制为127.0.0.1。 我也有/admin URLConf挂载/在Django应用程序,这是Django的自动生成的pipe理界面的标准path。 该应用程序本身位于/apppath下,使用WSGIScriptAlias指令进行configuration。 现在,Apache以某种方式将每个请求处理为/app/admin并将其子path定向为应用程序和文档根目录。 我得到Django的pipe理显示,但是error.log包含这样一行: [Tue Feb 14 01:25:35.538501 2017] [authz_core:error] [pid 29235] [client 32.135.203.150:36412] AH01630: client denied by server configuration: /var/www/html/admin/ 除了两件事之外,这几乎不是问题: 我不得不closuresfail2ban, 我不能在pipe理员上传文件,我怀疑这是为什么,因为这个错误出现在我每次尝试(接收500作为响应)。 这是通过重命名我的html目录或Django的pipe理应用程序来解决的,但我真的很想find正确的解决scheme,让我有两个。 Debian中的Apacheconfiguration被分割成多个文件,但我相信相关的部分如下: <VirtualHost *:80> ServerAdmin webmaster@localhost SetOutputFilter DEFLATE BrowserMatch ^Mozilla/4 gzip-only-text/html BrowserMatch ^Mozilla/4\.0[678] no-gzip BrowserMatch \bMSIE !no-gzip !gzip-only-text/html Include conf-available/default.conf DocumentRoot /var/www/html <LocationMatch ^/admin> Require ip 127.0.0.1 ::1 […]
我在Azure上运行的Windows Server 2016 Datacenter Edition VM中设置BuildBot worker。 这将使用Visual Studio C ++编译器构build我们的Windows产品。 我已经到了在pipe理桌面会话中安装和运行worker的地步。 它连接到我们的构build主服务器,似乎能够根据testing版本的结果访问所需的所有工具和服务。 我一直在努力让工人作为一项服务来运作。 这将使自动运行worker成为非特权用户成为可能。 除了…服务没有启动。 当我查看事件日志时,在“Windows日志→系统”中看到两个错误: 事件ID:7000 由于以下错误,BuildBot服务无法启动:服务没有及时响应启动或控制请求。 事件ID:7009 在等待BuildBot服务连接时达到了超时(30000毫秒) BuildBot本身没有login“Windows日志→应用程序”的事件,并且在尝试启动时立即logging这些事件(并且服务报告为失败)。 目前,该服务设置为“本地系统”(我打算稍后限制权限)运行。 据我所知,“LocalSystem”应该可以访问所有本地资源,所以我不认为文件系统权限可能会导致这个问题。 有没有经常遇到这样的服务失败的原因? 还有我应该看的其他日志或诊断信息吗? 我可以采取哪些其他措施来确定导致此故障的原因? 编辑:即使使用此堆栈溢出答案中提供的简单testing服务,此问题是可重现的。
我们正在用Python编写一个用C语言编写的软件。 现在我们想提供一个在线界面,人们可以在python中进行攻击并运行此代码。 有点像pythonanywhere 有一些我们可以使用的开源浏览器界面吗?
使用Flask,NGINX和uWSGI我已经成功安装了一个应用程序,通过Twilio发送和接收文本消息。 一切工作都很完美,只是它在我的个人用户帐户(名为trinitrogen)下运行。 我想移动它来运行一个不同的用户帐户(命名应用程序),但是在systemd单元文件有问题。 我的困难的最大难题是,我什至不能find一个好logging错误,所以我不知道从哪里开始 首先,我基于这个教程所做的工作大部分都取得了成功,正是所分享的内容 我创build了新的用户,并将其添加到车轮 [apps@argon ~]$ groups apps wheel 将repo克隆到应用程序主目录中,在目录中设置名为venv的virtualenv,安装所有python软件包,在命令行中成功testing了uwsgi [apps@argon PowderMonitor]$ uwsgi –socket 10.0.0.221:8080 –protocol=http -w wsgi:app 它工作很好。 我开始设置systemd文件,但这是我碰到的一堵墙。 下面是当前文件,以及尝试重新启动服务后的输出。 [apps@argon PowderMonitor]$ cat /etc/systemd/system/TwilioApp.service [Unit] Description=uWSGI – TwilioApp – apps acccount After=network.target [Service] User=apps Group=nginx WorkingDirectory=/home/apps/PowderMonitor Environment="PATH=/home/apps/PowderMonitor/venv/bin" ExecStart=/home/apps/PowderMonitor/venv/bin/uwsgi –ini TwilioApp.ini [Install] WantedBy=multi-user.target [apps@argon PowderMonitor]$ sudo systemctl restart TwilioApp.service [apps@argon PowderMonitor]$ sudo systemctl […]
我在Django中编写了一个webapp,我使用mod_wsgi在Apache 2.4下运行。 乍一看,它工作正常。 但是,当Apache进程运行了一段时间后,webapp开始响应503错误。 在F5之后,你可以通过很多次。 令人讨厌的是我没有任何与我的Apache error.log相关的任何东西 ,所以我不知道从哪里开始debugging。 我唯一的领导是浏览器中显示的错误: 503 Service Unavailable 。 其他网站(PHP)不受影响。 重新启动Apache服务器可以立即解决问题。 我的这个webapp的Apacheconfiguration: WSGIDaemonProcess app python-path=/opt/app home=/opt/app WSGIProcessGroup app WSGIScriptAlias /app /opt/app/wsgi.py 我发现这个,但我不认为这是问题,因为套接字已经放在/var/run/apache2/在我的情况(不是“Apache日志目录”)。 这个目录对其他人是可读的。 套接字本身有模式700 ,但拥有正确的所有者( www-data )。 有任何想法吗? 编辑: 我注意到,当问题发生时,我重新启动Apache来修复它,Apache需要很长的时间才能退出。 在错误日志中,我发现这些消息: [Sun Jun 25 14:14:18.935566 2017] [core:warn] [pid 374:tid 140587055682752] AH00045: child process 21761 still did not exit, sending a SIGTERM […]
有没有办法指定一个可执行文件的自定义dynamic库searchpath? 我想要/ usr / bin / python引用/usr/lib64/libpython2.7.so和/usr/local/bin/python2.7来使用/usr/local/lib/libpython2.7.so。 目前,我已经将Python 2.7.5作为/usr/bin/python(旧的,由CentOS使用)和Python 2.7.13作为/usr/local/bin/python2.7(新的用于开发)。 但是,这两个可执行文件都给我Python 2.7.13。 $ /usr/bin/python2.7 –version#Python 2.7.5 Python 2.7.13 ←错误! $ /usr/local/bin/python2.7 –version#Python 2.7.13 Python 2.7.13 他们绝对是独立的可执行文件。 -rwxr-xr-x. 1 root root 7136 Nov 5 2016 /usr/bin/python2.7 -rwxr-xr-x. 1 root root 11368 May 13 18:21 /usr/local/bin/python2.7 这是令人困惑的,直到我意识到它们都dynamic链接到libpython2.7.so,并且都在/ usr / local / lib中search它。 这是使用ldd确认的。 我可以通过修改/etc/ld.so.conf或$ LD_LIBRARY_PATH来得到旧的Python。 $ LD_LIBRARY_PATH […]
我创build了一个Django服务器,它使用Django通道进行websocket通信。 当我用NGINX运行服务器时,服务器和客户端之间的websocket通信有一个初始延迟。 在最初的延迟之后,所有丢失的数据在非常短的时间内到达,然后开始实时通信。 我已经testing了服务器的独立和没有NGINX代理只有一个达芙妮实例,并没有最初的通信延迟。 以下是我的NGINXconfiguration。 如果任何人有任何想法,为什么我会得到一个最初的10秒延迟websocket通信,将不胜感激。 worker_processes 1; events { worker_connections 1024; } http { map $http_upgrade $connection_upgrade { default upgrade; '' close; } include mime.types; default_type application/octet-stream; #log_format main '$remote_addr – $remote_user [$time_local] "$request" ' # '$status $body_bytes_sent "$http_referer" ' # '"$http_user_agent" "$http_x_forwarded_for"'; #access_log logs/access.log main; sendfile on; #tcp_nopush on; #keepalive_timeout 0; keepalive_timeout 0; […]