Articles of python

loggingDjango网站的在线用户快照(postgresql后端,nginxnetworking服务器)

在我的Django + postgresql网站上,我需要公开显示所有网站在某个时间点(这是一个社交网站)。 我该怎么做呢? 例如,是否有一种方法可以枚举在前10分钟内击中我的nginx web服务器的所有login用户? 像这样的东西可以工作。 我是一个初学者,现在正在寻找一个可行的解决scheme。 目前为了实现这一点,我将会话存储到数据库, 使用外部库来使会话可枚举。 这使我可以查询有多less唯一用户在某个时间点上线。 但是这个scheme造成了很多不必要的数据库stream量。 因此,日志和修剪日志变得无效。 此外pgFouine告诉我会话相关的数据库调用是我的网站目前最大的性能瓶颈。 这里有一个build议的解决scheme,但它使用数据库。

如何在传统的Flask应用程序中实现虚荣URL?

我遇到了一个问题,那就是我需要将旧版Flask应用程序中的现有URLredirect或replace为更“虚荣”的URLscheme。 例如: www.example.org/camp – >确实指向https://example.org/connect/rally_camps/register 虽然我设法做这个工作使用nginxconfiguration(这是使用典型的uwsgi +反向代理nginxconfiguration为serverd): location /camp { rewrite ^/.* https://example.org/connect/rally_camps/register permanent; } 当我打到虚荣url时,我被redirect到非虚荣url(长一个)。 这显然看起来丑陋…我不知道是否有办法告诉nginxredirect,但保持相同的URL或这是需要一些Flask的工作… 301redirect时,用户点击虚荣URL到长URL ? 但是,我认为这将再次改变url…任何想法? 谢谢!

Django 301和403在我的静态文件在生产中禁止错误

我试图使用nginx和gunicorn在ubuntu 14.04 vps上部署一个django网站,但我的css文件和js文件没有得到loaded.i在默认的django开发服务器上开发它,它工作得很好,但是当我部署我的网站和collectstatic并尝试通过浏览器访问它只有HTML文本被加载,并在我的浏览器控制台检查,我发现我的静态文件夹301和403 forbidden错误。 ia新手到Ubuntu和Django,以及我在网上find的所有线程和论坛只是指向文件的权限和所有权,并没有任何运气,当我纠正我的权限。 当我尝试访问Djangopipe理员时,我的浏览器错误的截图 这里是我的settings.py import os # Build paths inside the project like this: os.path.join(BASE_DIR, …) BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) # Quick-start development settings – unsuitable for production # See https://docs.djangoproject.com/en/1.11/howto/deployment/checklist/ # SECURITY WARNING: keep the secret key used in production secret! SECRET_KEY = '' # SECURITY WARNING: don't run with debug turned […]

Django + gunicorn + nginx电报webhook ssl麻烦

我试图设置一个django作为webhooks电报机器人。 我使用这个命令创build一个ssl证书: openssl genrsa -out webhook_pkey.pem 2048 openssl req -new -x509 -days 3650 -key webhook_pkey.pem -out webhook_cert.pem # In Common Name i type a server IP address 安装程序在端口800上运行gunicorn,将nginx中的proxy_pass设置为localhost:800。 网站正常工作,我可以打开浏览器,看到我的主页。 Gunicorn从这个命令开始: gunicorn wsgi -b 127.0.0.1:800 # wsgi is django generated wsgi.py file 我的nginx.conf文件: upstream django { server 127.0.0.1:800; } server { listen 80; listen 443 ssl; […]

如何创buildmysite.wsgi文件?

我正在学习这个教程http://uwsgi-docs.readthedocs.io/en/latest/tutorials/Django_and_nginx.html用nginx和uwsgi设置django。 但是我对这条线感到困惑: uwsgi –http :8000 –module mysite.wsgi 在教程中,没有关于mysite.wsgi文件的信息。 这个文件应该是什么内容?

Djangopipe理file upload中的“连接重置”错误

每当我尝试通过我用Django Admin contrib pacakage构build的CMS上传一个mp3文件,服务器需要几分钟,然后给我一个“连接被重置”的错误。 我在使用NGINX的CentOS服务器上运行Django,它使用mod_wsgi for python代理Apache。 这可能是一个服务器设置问题?

webpy与nginx + mod_wsgi模板文件无法find

我用nginx + mod_wsgi使用webpy。 为了导入模块(控制器等),我写了 curdir = os.path.dirname(__file__) sys.path.append(curdir) 在app.py中,相应的nginxconfiguration是 wsgi_pass /path/to/app.py 像往常一样,我把所有的模板放在一个名为模板的文件夹中,在webpy中 render = weg.template.render('templates') 此方法导致path问题,无法find模板文件。 我怎样才能正确configuration? 非常感谢。 更新 :问题解决与追加 os.chdir(curdir)

HTTPFound返回的位置标头不包含非标准的端口号

我有一个金字塔应用程序运行在nginx后面(监听端口8080)上的gunicorn(在Unix套接字上侦听)。 当Pyramid视图返回HTTPFound(location='/') HTTP响应包含Location: http://example.host/没有端口号,所以用户得到“无法连接”的错误。 我找不到指定非标准端口号的位置,或者(最好)在生成Location标题时告诉金字塔从请求中提取它。 从应用程序configuration摘录: [server:main] use = egg:gunicorn#main host = unix:%(here)s/run/server.sock workers = 4 Nginxconfiguration: server { listen 8080; root /path/to/app; location / { proxy_pass http://unix:/path/to/app/run/server.sock; include proxy_params; } location /static { root /path/to/app/static; } }

HA部署为Python wsgi应用程序

我考虑部署高可用性Python Web应用程序的情况: 负载均衡器 – * wsgi服务器 负载均衡器 – *生产HTTP服务器 – wsgi服务器 生产HTTP服务器(具有负载平衡function,如Nginx) – * wsgi服务器 对于负载平衡器,我考虑HAProxy 对于生产HTTP服务器,我考虑Nginx 对于wsgi服务器,我的意思是直接处理wsgi应用程序(gevent,女服务员,uwsgi …) – *表示一对多连接 – 意味着一对一的连接 没有静态内容可供使用。 所以我想知道是否需要生产HTTP服务器。 每个解决scheme的优缺点是什么? 对于每个场景(1-3),取代wsgi服务器是否有使用wsgi容器服务器(uWSGI,gunicorn),而不是原始的wsgi服务器(gevent,龙卷风)的优势? 我也想知道哪个解决scheme最适合websockets或长时间轮询请求?

用金字塔服务GridFS文件

我想知道什么是使用金字塔从GridFS提供文件的最好,也是最简单的方法。 我使用nginx作为代理服务器(对于ssl)和女服务员作为我的应用程序服务器。 我需要能够服务的文件types如下:mp3,pdf,jpg,png 这些文件应该可以通过以下URL“/ files / {userid} / {filename}”来访问 现在,文件由客户端的正确应用程序打开,因为我在代码中明确地设置了内容types,如下所示: if filename[-3:] == "pdf": response = Response(content_type='application/pdf') elif filename[-3:] in ["jpg", "png"]: response = Response(content_type='image/*') elif filename[-3:] in ["mp3"]: response = Response(content_type='audio/mp3') else: response = Response(content_type="application/*") response.app_iter = file #file is a GridFS file object return response 唯一的是,我无法正确stream化MP3。 我使用audio.js来播放它们。 他们打开了,但没有显示轨道长度,我不能find他们。 我知道这与“接受范围”财产有关,但我似乎无法正确设定。 这是否与nginx或女服务员? 或者我只是没有正确设置标题? 我想使用像return FileResponse(file)一样简单的东西就像这里指定,但我的文件不是直接来自文件系统…有没有一种即插即用的方式,使其工作? […]