标签: python

如何通过 bash 脚本进行优雅的 uwsgi 重新加载?

我有一个正在执行 bash 脚本的 django 应用程序。我需要重新启动 nginx 服务器,所以我运行/etc/init.d/nginx reload效果很好。我一直在使用restart uwsgiuwsgi,但我需要正常重新加载而不是硬重启服务器。

我怎样才能做到这一点?


我目前正在通过 .bashrc 运行 bashreload uwsgi函数subprocess.popen。它似乎只是重新加载调用子进程的进程,而不是由 uwsgi 实例托管的所有站点。importing uwsgi并且运行uwsgi.reload似乎也只影响调用过程。是否有通过 python 或 bash 切换 uwsgi 的开关,允许重新启动所有 uwsgi 进程

python uwsgi

11
推荐指数
2
解决办法
2万
查看次数

PYTHONPATH 环境变量...之后如何创建每个子目录?

我目前这样做:

PYTHONPATH=/home/$USER:/home/$USER/respository:/home/$USER/repository/python-stuff
Run Code Online (Sandbox Code Playgroud)

我怎样才能使 PYTHONPATH 可以包含所有子目录?

PYTHONPATH = /home/$USER/....and-all-subdirectories
Run Code Online (Sandbox Code Playgroud)

linux unix python environment-variables

10
推荐指数
1
解决办法
3万
查看次数

用 Python 编写的 init.d 脚本

一个问题想出了StackOverflow上询问写init.d在Python脚本。一条评论指出这些脚本应该在 shell 中编程,而不是在 Python 中。正在init.d用 Python编写脚本:

  1. 坏的。坏的。坏的。永远不要这样做。
  2. 不是推荐的做法。
  3. 好的,有警告。
  4. 传统教条。
  5. 完全没问题。

知道任何噩梦场景,或者这条规则是否是用某些系统管理员的血写的,那就太好了。

linux python init.d

10
推荐指数
2
解决办法
2976
查看次数

同一个uwsgiEmperor下的不同Python版本?

我正在运行一个带有各种 Vassals 的 uwsgi Emperor,每个 Vassals 都为来自不同 virtualenv 的特定 Python 应用程序提供服务。由于 uwsgi 是用它自己的 Python 2.7 解释器编译的,因此尝试在其中使用带有 Python 3 的 virtualenv 会在 vassal.log 中产生以下错误:

ImportError: No module named site
Run Code Online (Sandbox Code Playgroud)

我相信这个错误的根源是 uwsgi 使用的是它内置的 Python 2.7 解释器,而它运行的 virtualenv 目录只支持 Python 3 解释器。事实上,当我使用另一个 uwsgi(只需将它安装pip install uwsgi在同一个 virtualenv 中)时,错误就会消失。但是,我希望一个皇帝统治几个不同的 virtualenv,所以在每个虚拟环境中安装一个单独的 uwsgi 不是一种选择。

根据Stackoverflow 上的这个答案,解决这个问题的正确方法是使用不同的 Python 解释器编译 uwsgi 作为可加载模块。在我采用这种方法之前,我想知道如何配置我的 Vassals 以使用另一个解释器插件。

现在我有一个皇帝,它从我的 /etc/rc.local 启动,并具有以下设置:

[uwsgi]
uid = www-data
gid = www-data
master = true
emperor = /etc/uwsgi/vassals
daemonize = /var/log/uwsgi/emperor.log
Run Code Online (Sandbox Code Playgroud)

然后我有一堆 Vassals …

python virtualenv uwsgi

10
推荐指数
2
解决办法
1万
查看次数

如何卸载 pip 和 python

我想安装 python 和 pip 的第 3 版,但发出了

sudo apt-get install python-pip python-dev
Run Code Online (Sandbox Code Playgroud)

我如何卸载 python 和 pip,我试过 sudo apt-get uninstall 但没有用,正确的命令是什么?

linux ubuntu python pip ubuntu-16.04

10
推荐指数
2
解决办法
15万
查看次数

如何向运行共享 IIS 服务器的 Python 新手解释 Django/Python 安装

由于我无法控制的原因,我们的网站由托管服务提供商托管,该提供商将 IIS 用于其服务器。他们目前通过 cgi-scripts 提供 PHP 和 ASP,以及 Python 和 Perl。

我想重新设计、重新编写我们的网站,并想从 PHP 更改为 Python/Django 设置。托管服务提供商对建议持开放态度,但明确表示“我们真的不知道 Python 是什么,也不知道它是如何工作的,但如果您能向我们解释,我们会尽力为您设置所需的一切” .

但是,我可能知道如何在 apache/mod_python 上的共享托管环境中设置 Django,但我不知道如何在 IIS 上设置它,当然也不知道如何为共享托管环境设置它。我用谷歌搜索了一下,但我找到的大部分资源都假设系统管理员 1) 知道 Python/Django 和 2) 正在为他的站点使用专用的 IIS 托管。

有人可以解释我如何向我的托管服务提供商解释这个过程,或者给我指点我可以转发给我的托管服务提供商的好的、详细的资源吗?请记住,运行主机的人可能知道关于 IIS 的“一切”,但不知道如何处理 Python。

iis python web-hosting django

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

我应该在 Mac OSX Mavericks 上使用 python pip 还是自制软件安装 Ansible?

我最近开始使用 OSX 来管理我的 linux 机器,所以我对在 OSX 上使用 linux 程序非常陌生。

我想使用带有 Ansible 的 Vagrant 来引导我的开发环境,所以我需要先安装它。

但是我发现了两种在 OSX 上安装 Ansible 的方法:

点子:http : //devopsu.com/guides/ansible-mac-osx.html

自制:https : //github.com/Homebrew/homebrew/blob/master/Library/Formula/ansible.rb

我已经使用 pip 方法安装了 Ansible,因为我首先遇到了该指南。

这两种方法的优缺点是什么?我应该使用 pip 还是 homebrew 安装 Ansible?

我发现轻松安装会干扰自制软件:

Warning: /usr/bin occurs before /usr/local/bin
This means that system-provided programs will be used instead of those
provided by Homebrew. The following tools exist at both paths:

    easy_install
    easy_install-2.7
Run Code Online (Sandbox Code Playgroud)

python mac-osx vagrant ansible

9
推荐指数
2
解决办法
2万
查看次数

如何使用 python docker-py 连接到 AWS ECR

从命令行运行时,要从特定注册表中提取,我可以运行以下命令:

dockerCommand=$("aws ecr get-login --profile profileName --region us-west-2")
$dockerCommand  (which looks like docker login -u AWS -p ..longPassword.. -e none https://ACCTID.dkr.ecr.us-west-2.amazonaws.com
docker pull ACCTID.dkr.ecr.us-west-2.amazonaws.com/REPO/NAME:TAGNAME
Run Code Online (Sandbox Code Playgroud)

如果我想要一个不同的注册表,我会更改区域或配置文件名称

用 docker-py 试试这个,我有

import boto3
import docker
dockerClient = docker.from_env()

session = boto3.setup_default_session(profile_name='vzw')
client = session.client('ecr', region_name='us-west-2')

token = client.get_authorization_token(registryIds=[registryId])

username = 'AWS'
password = token['authorizationData'][0]['authorizationToken']
registry = token['authorizationData'][0]['proxyEndpoint']
regClient = dockerClient.login(username, password, registry)
Run Code Online (Sandbox Code Playgroud)

dockerClient拒绝与以下内容的联系:

错误的用户名或密码

从那里开始,一旦工作正常,我将想要使用 docker 客户端拉/推在注册表之间移动图像。

是正确的方向还是我应该尝试完全使用 shell 脚本来实现?(Python 对于描述每个注册表中的内容的 boto 调用特别有价值)

python docker amazon-ecr

9
推荐指数
4
解决办法
8619
查看次数

Active Directory 2012 LDAP 集成服务主体名称条目正在消失?

创建 Python 服务来查询 AD 属性

我正在使用 Python-LDAP over SASL(DIGEST-MD5) 将我们的 AD 与在 Linux 上运行 Python 的 Web 服务集成,以查询 AD 2012 用户属性(部门、部门、电话分机、电子邮件等)。在针对 AD 2003 解决特定于我的服务的问题后,我开始遇到针对我们的新 AD 2012 的 SPN 错误,即摘要 uri 与服务器上的任何 SPN 都不匹配。我已经交叉引用了两台服务器的 SPN 列表,它们包含彼此相同的类似物。

错误:摘要 uri 与为此服务器注册的任何 LDAP SPN 都不匹配

修复?

这是通过运行修复的:

setspn -A ldap/<Domain_Name> <Computer_Name>
Run Code Online (Sandbox Code Playgroud)

请注意,即使运行以下命令,创建服务帐户也无法修复我的 SPN 错误:

setspn -A ldap/<Domain_Name> <Domain_Name>/<Service_Account_Name>
Run Code Online (Sandbox Code Playgroud)

simple_bind_s() 不需要 SPN,sasl_interactive_bind_s() 需要 SPN

仅使用 sasl_interactive_bind_s() 将 SPN 添加到本地机器 SPN 列表才适用于我的 Python-LDAP 服务。我还应该注意,如果我使用 simple_bind_s() 可以跳过 SPN 步骤,但此方法以明文形式发送凭据,这是不可接受的。

但是我注意到该记录只在 SPN 列表上停留了大约一分钟然后消失了?运行 setspn 命令时没有错误,事件日志完全为空,任何地方都没有重复项,在基本 dn 上使用 -F …

active-directory python ldap spn

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

从标准输入解压缩到标准输出 - funzip,python

目标是从 stdin 读取 zip 文件并解压缩到 stdout。

Funzip 有效并且是我正在寻找的解决方案,zip 包含一个文件,不幸的是,当压缩文件大小约为 1GB 或更大时,funzip 会失败:

funzip error: invalid compressed data--length error
Run Code Online (Sandbox Code Playgroud)

更新:我发现上述错误可能并不表示实际错误。比较两个未压缩的文件,一个是传统解压缩,另一个是通过管道使用 funzip(将上述错误写入 stderr),这些文件是相同的。我想保持这个开放,所以这可以被确认或报告。

使用python的相关解决方案: 解压缩通过管道飞入的文件

然而,这个输出被定向到一个文件。

linux compression python bash pipe

8
推荐指数
3
解决办法
2万
查看次数