标签: python

服务器重启后无法通过主管启动 Gunicorn

我有一个使用 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)

python django supervisord gunicorn

1
推荐指数
1
解决办法
6127
查看次数

Mysql 在重新启动时侦听错误的端口

我正在开发一个“本地”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)

mysql linux debian python

1
推荐指数
1
解决办法
378
查看次数

随着时间的推移,上传到 S3 存储桶会变慢

我正在将大约 200,000 个文件(每个最大约 1MB)从 EC2 实例(均位于欧洲西部)上传到 S3 存储桶。

从使用 CloudWatch 监控 EC2(查看NetworkOut指标)来看,随着时间的推移,上传传输似乎有所下降:

在此处输入图片说明

我分几批上传文件,下载似乎是一致的,通常在四五个小时后(但有时发生得更快)。

这些文件使用 Python 脚本上传,其中:

  1. 从第三方服务器下载 .zip
  2. 从 .zip 中提取大约 25 个文件并对每个文件进行 gzip
  3. 将 .gzip 文件上传到存储桶

我尝试了两种上传 .gzip 文件的方法......

  • 依次使用 boto3: boto3.client("s3").upload_file(file.gz, bucket, file.gz)
  • 将 AWS CLI 作为子进程运行以一次上传 25 个 .gzip 文件

...但我看到每种方法都有相同的下降。

什么可能导致这种情况?或者我应该收集什么信息来调试它?

编辑

这是同一时期的图表,显示了BurstBalance指标(EC2 实例是 t2.small):

在此处输入图片说明

这是CPUCreditBalance

在此处输入图片说明

python amazon-web-services aws-cli

1
推荐指数
1
解决办法
1230
查看次数

每 48 小时运行一次 cron 的正确语法是什么?

这能正常工作吗?

CELERYBEAT_SCHEDULE = {
    'task-number-one': {
        'task': 'project.users.tasks.send_something',
        'schedule': crontab(minute='*/2880'),
    }
}
Run Code Online (Sandbox Code Playgroud)

python django celery

1
推荐指数
1
解决办法
7788
查看次数

Django 2.1 在 centos 7 上部署,使用 apache、mod_wsgi、python3 venv

我偶然发现了这个看似最相关的部署选项,因为指南似乎要么使用 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)

python django mod-wsgi centos7

1
推荐指数
1
解决办法
7275
查看次数

如何在 TCP 服务器中获取客户端 ip?

我开发了一个简单的 TCP 聊天系统,它运行良好。但我需要向此服务器添加一个新功能,即客户端验证。我计划通过使用客户端的 ip 地址来验证用户。这样我就可以应用“一个 ip = 一个用户或客户端”的条件

python

1
推荐指数
1
解决办法
71
查看次数

使用 IIS/Win Server(本地)提供 Python Flask Web 应用程序值得这么麻烦吗?

有一些资源(据我所知很少)表明从 IIS 提供 Python Web 应用程序是可行的,但我在实践中还没有听到或读过任何关于此的真实故事。

我想知道这种方法是否值得在几乎完全是 Windows 商店的组织中考虑。

在 Ubuntu 机器(组织中至少有一些知识)上运行 Python 的技能提升和投资是一个更好的选择吗?

这适用于虚拟机上的本地部署。在云服务上运行 Python 显然是一个完全不同的故事。

windows iis python

1
推荐指数
1
解决办法
2138
查看次数

具有不同 Python 版本的 mod_wsgi+Django

我的服务器默认运行 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?

python django mod-wsgi

0
推荐指数
1
解决办法
6082
查看次数

检查谁在没有 ssh 的情况下登录了另一台机器?

有没有办法找出谁在给定机器名称的情况下登录到网络上的另一台 Linux 机器,而不仅仅是 SSH 进入该机器并运行who?我更喜欢直接在 python 中使用的方法,但通过命令就可以了。

linux ssh python bash users

0
推荐指数
3
解决办法
1865
查看次数

高性能服务器 - 我应该使用什么?

我有一个大型游戏引擎,可以为手机客户端和网站提供服务。数据库是 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 秒将其全部转储到后端数据库)。

我的架构好吗?怎么改进呢?

windows iis-7 python sql-server-2008

0
推荐指数
1
解决办法
329
查看次数