Articles of python 3.x

在django中获取原始请求标头

有什么办法可以在django(托pipe在弹性beanstalk上)获得完整的未经处理的HTTP请求标头吗? 我希望能够分析特别是在头的顺序,所以不幸的HttpRequest.META不足以我的用例。

* 13上游过早closures连接,同时从上游读取响应头

我正在configuration第一次,并得到这个错误。 Ngnix的网站注册configuration如下: #tream component nginx needs to connect to upstream django1 { #server 127.0.0.1:8001; # for a web port socket (we'll use this first) server unix:///run/uwsgi/app/apps/sokcet.B; } # configuration of the server server { # the port your site will be served on listen 9000; # the domain name it will serve for server_name xxx.xxx.xx.xxx; […]

如何让Gunicorn使用Python 3而不是Python 2(502 Bad Gateway)

我试图让Gunicorn使用Python3来创build我想要创build的Django应用程序。 我正在使用Digital Ocean的Django图像开始。 它带有Django,Gunicorn和Nginx的安装和configuration。 这个图像附带的默认Django项目似乎对Python 2来说工作正常。 我已经apt-get '编辑这些软件包。 python3 python3-psycopg2 python3-dev的 python3-PIP 为了避免任何问题,我也做了这个。 点卸载Django pip3安装django 我rm -rf编辑股票项目,并用django-admin.py startproject django_project创build一个新项目。 django-admin.py使用Python 3(根据shebang)。 后来,我使用python3 manage.py startapp django_app来创build一个新的应用程序。 在这一点上,一切正常。 就像默认的应用程序。 然后,在django_app/views.py我这样做,它打破。 from django.shortcuts import render from django.http import HttpResponse def index(request): # Python 2 and 3 – works fine # print('PRINTING') # Python 3 only – crashes print(1, […]

对于打开的(..)行中意外挂起中间文件

当以这样的最基本的方式读取文件时: with open('/tmp/abs/path/file.txt', 'rb') as fh: for line in fh: print('New line…' # calculations print('Last line of line-loop') print('Ended up outside') # <– Never reaches this either, which is "fine". 文件操作挂起中间文件,最后一个输出是“线循环的最后一行”,意思是由于某种原因for line in fh的操作挂起。 文件大小是5025728020字节 文件位置:26957152字节 所以我想我会使用epoll()来监视阻止读取操作: with open('/tmp/abs/path/file.txt', 'rb') as fh: watcher = select.epoll() watcher.register(fh.fileno(), select.EPOLLIN) 但是,如果operation not permitted ,那么这个operation not permitted失败,在文件,套接字和标准输出pipe道上,这个过程已经有很多次了,但不是在这台机器上呢? 还是我只是幸运地在一些特殊的磁盘文件之前? Debian,v7.5 […]

select()在python2和python3上的performance有何不同?

我想从本文中描述的同一个线程中的subprocess读取stdout和stderr 。 在Python2.7中运行代码时,按照预期工作,Python3.3中的select()调用似乎不是它应该的。 看看这里是一个脚本,它会在stdout和stderr上打印两行,然后等待,然后重复这个过程: import time, sys for i in range(5): sys.stdout.write("std: %d\n" % i) sys.stdout.write("std: %d\n" % i) sys.stderr.write("err: %d\n" % i) sys.stderr.write("err: %d\n" % i) time.sleep(2) 有问题的脚本将在subprocess中启动上面的脚本,并按照发布的链接中的描述读取它的stdout和stderr : import subprocess import select p = subprocess.Popen(['/usr/bin/env', 'python', '-u', 'test-output.py'], stdout=subprocess.PIPE, stderr=subprocess.PIPE) r = [p.stdout.fileno(), p.stderr.fileno()] while p.poll() is None: print("select") ret = select.select(r, [], […]

如何在没有任何shell脚本的情况下运行新进程并build立连接?

我的目的是为其他程序创build一个新的进程,并build立一个长时间的连接(写入其stdin并读取结果的机会),即不是primefaces写入 – 读取操作,随后创build进程被终止。 我只能使用程序代码,而不是任何shell命令。 有我的代码: import subprocess proc = subprocess.Popen(['myprog', '-l'], shell = True, stdin = subprocess.PIPE, stdout = subprocess.PIPE) #proc was kept #after some waiting I try to send to proc some command if proc.returncode == None: proc.stdin.write(b'command') response = process.communicate()[0] 此代码返回空string(如果有一个事务被提交)或上升BrokenPipeError(如果它在循环中运行)。 第一个process.communicate()之后proc是否还活着? 我需要使用什么方法来控制proc的stdin / stdout?

无法findexception的来源,以及它是什么样的exception

我有一个在cron定期运行的服务器上的python刮板。 有时它会崩溃,但我不知道是什么让它崩溃,崩溃的原因是因为没有任何与日志中的exception相关:既不提及错误,也不提供堆栈跟踪。 logging器是这样设置的: logging.basicConfig(filename="log.log", level=logging.INFO) 但是在例外情况下,无论如何都必须login到日志中,是不是这样? 问题是,我怎样才能findexception的来源。

使用Pyserial将hex串行端口闪烁到LPC微控制器不起作用

我正在使用Arch Linux,并没有find任何软件允许我将文件闪存到我的微控制器。 我学校的闪光文件有一个python文件,当我运行它,我得到错误消息的根:超时! 代码: ######## # CHANGELOG: # 2016-02-15 : Working Skeleton for Flashing a Hex file to SJOne comeplete! # import string import os import time import struct import binascii import math import serial.serialutil import logging import sys sys.path.append('/usr/lib/python3.5/site-packages/') from intelhex import IntelHex import serial ############################################################################### ################# CONFIGURATION FOR pyFlash – Hyperload ###################### ############################################################################### […]

test_venv失败Python 3.6.1安装

我刚刚安装了Linux Mint 18.1(所以我是Linux新手,我不知道我在做什么!),我试图安装Python 3.6.1。 但是,其中一个安装testing失败 – test_venv。 这里是日志: running build running build_ext INFO: Can't locate Tcl/Tk libs and/or headers warning: building with the bundled copy of libffi is deprecated on this platform. It will not be distributed with Python 3.7 Python build finished successfully! The necessary bits to build these optional modules were not found: […]

从Python内部输出grep库

当从命令行调用一个程序时,我可以通过pipe道输出到grep来select我想要查看的行,例如 printf "hello\ngood day\nfarewell\n" | grep day 我在寻找相同types的行select,但是从Python调用的C库。 考虑下面的例子: import os # Function which emulate a C library call def call_library(): os.system('printf "hello\ngood day\nfarewell\n"') # Pure Python stuff print('hello from Python') # C library stuff call_library() 当运行这个Python代码时,我希望C部分的输出在string'day'被grep ,使得代码的输出 你好,来自Python 美好的一天 到目前为止,我已经使用这里和这里描述的方法来重新定位stdout 。 我可以使C输出完全消失,或者将其保存为str ,并在稍后打印出来(这是两个链接主要关心的部分)。 然而,我不能够根据其内容select打印哪一行。 重要的是,我希望在调用C库的同时实时输出,因此我不能只是将stdoutredirect到某个缓冲区,并在事后处理这个缓冲区。 该解决scheme只需要在Linux上使用Python 3.x。 如果除了行select之外 ,解决scheme使得行编辑成为可能,那将更大。 我认为以下几点应该是可能的,但我不知道如何设置它 将stdoutredirect到内存中的“文件”。 产生一个不断从这个文件读取的新线程,根据行内容进行select,并将所需的行写入屏幕,即stdout的原始目标。 调用C库 将两个线程重新join,并将stdoutredirect回原来的目标(屏幕)。 […]