我有一个使用 Nginx 和 Gunicorn 的 Django 应用程序“djngxgun”。我刚刚安装了 Supervisor,以便我可以使用它来管理我的 Gunicorn 进程。问题是在我重新启动服务器后,Supervisor 没有启动 Gunicorn。当我通过主管启动 Gunicorn 时(“sudo supervisorctl start djngxgun”),我看到在我的 Gunicorn error.log 文件中重复出现以下错误:
2014-02-28 15:36:47 [4753] [INFO] Starting gunicorn 18.0
Traceback (most recent call last):
File "/home/djngxgun/venv/djngxgun/bin/gunicorn", line 9, in <module>
load_entry_point('gunicorn==18.0', 'console_scripts', 'gunicorn')()
File "/home/djngxgun/venv/djngxgun/local/lib/python2.7/site-packages/gunicorn/app/wsgiapp.py", line 71, in run
WSGIApplication("%(prog)s [OPTIONS] [APP_MODULE]").run()
File "/home/djngxgun/venv/djngxgun/local/lib/python2.7/site-packages/gunicorn/app/base.py", line 143, in run
Arbiter(self).run()
File "/home/djngxgun/venv/djngxgun/local/lib/python2.7/site-packages/gunicorn/arbiter.py", line 172, in run
self.start()
File "/home/djngxgun/venv/djngxgun/local/lib/python2.7/site-packages/gunicorn/arbiter.py", line 124, in start
self.pidfile.create(self.pid)
File "/home/djngxgun/venv/djngxgun/local/lib/python2.7/site-packages/gunicorn/pidfile.py", line 38, in create
fd, fname = …Run Code Online (Sandbox Code Playgroud) 我正在开发一个“本地”PHP 项目。这是一个在 Debian VM 中运行的 PHP 应用程序,旨在在用户自己的 PC 上使用。
我有几个 python 脚本作为来自 /etc/init.d 的根服务运行,它们处理应用程序更新、日志、与 USB 外围设备的通信和其他内容。
编辑 1: VM 是 Turnkey Linux LAMP 映像,python 版本为 2.7.3,MySQL 5.5.47
PHP 应用程序通过 TCP 套接字与 python 服务对话,发送用户需要的特定任务的请求。
现在,我试图让用户选择让 MySQL 服务器只绑定到本地主机还是与网络上的其他用户共享。为此,我让 python 服务通过 my.cnf 文件,并注释掉 bind-address = 127.0.0.1 行,或者将其取消注释以使服务器再次本地化。
在 my.cnf 编辑之后,python 脚本调用 /etc/init.d/mysql restart 以使更改生效。
问题是,现在 mysql 最终会侦听 Python 服务正在侦听 PHP 请求的端口,如果我需要重新启动该服务,Python 会失败,声称它无法打开该端口,因为它已经在使用中。
我不明白为什么 mysql 最终会监听 python 服务使用的端口而不是 my.cnf 文件所说的 3306 。
此外,如果我通过 ssh 连接到 VM 并手动重新启动 mysql,它会返回到 3306 上的侦听,并且我可以正常启动 python 服务。
python端的一些代码:
RECV_BUFFER …Run Code Online (Sandbox Code Playgroud) 我正在将大约 200,000 个文件(每个最大约 1MB)从 EC2 实例(均位于欧洲西部)上传到 S3 存储桶。
从使用 CloudWatch 监控 EC2(查看NetworkOut指标)来看,随着时间的推移,上传传输似乎有所下降:
我分几批上传文件,下载似乎是一致的,通常在四五个小时后(但有时发生得更快)。
这些文件使用 Python 脚本上传,其中:
我尝试了两种上传 .gzip 文件的方法......
boto3.client("s3").upload_file(file.gz, bucket, file.gz)...但我看到每种方法都有相同的下降。
什么可能导致这种情况?或者我应该收集什么信息来调试它?
编辑
这是同一时期的图表,显示了BurstBalance指标(EC2 实例是 t2.small):
这是CPUCreditBalance:
这能正常工作吗?
CELERYBEAT_SCHEDULE = {
'task-number-one': {
'task': 'project.users.tasks.send_something',
'schedule': crontab(minute='*/2880'),
}
}
Run Code Online (Sandbox Code Playgroud) 我偶然发现了这个看似最相关的部署选项,因为指南似乎要么使用 python2 引用 mod_wsgi,要么在预期路径不同的基于 deb 的系统上进行部署。
所以我按照以下步骤操作:
#repos for python3.6, wsgi for python3.6
yum install epel-release centos-release-scl
#base packages
yum install python36 python36-devel httpd httpd-devel rh-python36-mod_wsgi
#python3.6 venv
cd /var/www;
python36 -m venv django-venv
source django-venv/bin/activate
pip3 install django
#apache config to support wsgi
edit /etc/httpd/conf/httpd.conf to include
LoadModule wsgi_module modules/mod_wsgi.so
Run Code Online (Sandbox Code Playgroud)
Apache 配置服务位于 /var/www/mysite 的 django 内容
<VirtualHost *:80>
ServerAdmin foo@mysite.com
ServerName mysite.com
ServerAlias www.mysite.com
WSGIDaemonProcess mysite python-home=/var/www/django-venv/ python-path=/var/www/django-venv/lib/python3.6/site-packages
WSGIProcessGroup mysite
WSGIScriptAlias / /var/www/mysite/mysite/wsgi.py
Alias /static /var/www/mysite/static
<Directory /var/www/mysite/mysite/static>
Require …Run Code Online (Sandbox Code Playgroud) 我开发了一个简单的 TCP 聊天系统,它运行良好。但我需要向此服务器添加一个新功能,即客户端验证。我计划通过使用客户端的 ip 地址来验证用户。这样我就可以应用“一个 ip = 一个用户或客户端”的条件
有一些资源(据我所知很少)表明从 IIS 提供 Python Web 应用程序是可行的,但我在实践中还没有听到或读过任何关于此的真实故事。
我想知道这种方法是否值得在几乎完全是 Windows 商店的组织中考虑。
在 Ubuntu 机器(组织中至少有一些知识)上运行 Python 的技能提升和投资是一个更好的选择吗?
这适用于虚拟机上的本地部署。在云服务上运行 Python 显然是一个完全不同的故事。
我的服务器默认运行 Python 2.4,我曾经make altinstall为我的 Django webapp 安装一个备用的 Python 2.6。
但是, mod_wsgi 似乎默认使用/usr/bin/python(2.4) 而不是/usr/local/bin/python2.6.
有没有一种简单的方法可以强制 mod_wsgi 使用 Python 2.6?
有没有办法找出谁在给定机器名称的情况下登录到网络上的另一台 Linux 机器,而不仅仅是 SSH 进入该机器并运行who?我更喜欢直接在 python 中使用的方法,但通过命令就可以了。
我有一个大型游戏引擎,可以为手机客户端和网站提供服务。数据库是 MSSQL2008,引擎是用 C# 编写的。
网站是用ASP.NET MVC构建的,手机的web服务也是基于ASP.NET MVC构建的(可能会迁移到WCF或者纯socket服务器)。
该网站和 Web 服务位于 IIS 7 服务器上,而 DB 位于专用服务器上。两者都连接在本地快速 LAN 上。
游戏需要每个用户的实时响应(低于 1 秒)。当我对服务进行一些负载测试时 - 似乎在大约 250 个用户上它达到了 1 秒响应(在 50 时大约为 200 毫秒)。它应该支持超过 10000 个连接的用户。(我猜是服务器复制)。
我想再添加一层 - 用于游戏 Web 服务的专用实时服务器。我听说 Python 可用于构建非常高性能的服务 - 添加这一层是一个聪明的主意吗?(该层应该有内存临时数据库来为实时玩家提供服务,然后每 X 秒将其全部转储到后端数据库)。
我的架构好吗?怎么改进呢?