我在我pgbouncer
的 Django 网络应用程序中使用。应用服务器和数据库服务器是两个独立的虚拟机。pgbouncer
安装在应用服务器上。中的相关设置pgbouncer.ini
是:
[databases]
dbname = host=80.211.128.113 port=5432 dbname=dbname
pool_mode = transaction
max_client_conn = 250
default_pool_size = 100
Run Code Online (Sandbox Code Playgroud)
pgbouncer 接手后,我检查pgbouncer.log
并发现了很多条目,如下所示:
2016-11-15 12:26:27.514 582 LOG S-0x1192740: dbname/myuser@80.211.128.113:5432 new connection to server
2016-11-15 12:26:27.517 582 LOG C-0x11afcb8: dbname/myuser@127.0.0.1:42262 login attempt: db=dbname user=myuser
2016-11-15 12:26:27.523 582 LOG S-0x1192a10: dbname/myuser@80.211.128.113:5432 new connection to server
2016-11-15 12:26:27.528 582 LOG C-0x11af880: dbname/myuser@127.0.0.1:42250 closing because: client close request (age=0)
2016-11-15 12:26:27.528 582 LOG S-0x1191a98: dbname/myuser@80.211.128.113:5432 closing because: unclean server …
Run Code Online (Sandbox Code Playgroud) 通过HTML,是否可以从移动浏览器访问/打开SMS应用程序?
如果SMS通过用户自己的移动运营商(正常情况下)路由,也可以,并且也向所述用户收费.我不想创建自己的SMS网关来提供发送此类消息的平台.我只对从移动浏览器调用SMS功能感兴趣.
我见过以下例子:<a href="sms://+14035550185">Send an SMS</a>
但我不确定它们的工作范围有多广泛.我需要一个强大的解决方案,适用于广泛的移动浏览器(尤其是老式功能手机).我不想使用HTML5或Javascript.我所针对的大多数老式功能手机浏览器都不支持Javascript - 因此它是一个瓶颈.
我正在编写一个Django应用程序,它使用nginx反向代理+ gunicorn作为生产中的Web服务器.
我希望包括阻止来自某个IP(或IP池)的DDOS攻击的功能.这是在nginx级别,而不是代码中的任何更深层次.我需要Web应用程序防火墙吗?如果是这样,我该如何整合它.
我的项目位于可用站点的nginx文件具有:
server {
listen 80;
charset utf-8;
underscores_in_headers on;
location = /favicon.ico { access_log off; log_not_found off; }
location /static/ {
root /home/sarahm/djangoproject/djangoapp;
}
location /static/admin {
root /home/sarahm/.virtualenvs/myenv/local/lib/python2.7/site-packages/django/contrib/admin/static/;
}
location / {
proxy_pass_request_headers on;
proxy_buffering on;
proxy_buffers 8 24k;
proxy_buffer_size 2k;
include proxy_params;
proxy_pass http://unix:/home/sarahm/djangoproject/djangoapp/djangoapp.sock;
}
error_page 500 502 503 504 /500.html;
location = /500.html {
root /home/sarahm/djangoproject/djangoapp/templates/;
}
}
Run Code Online (Sandbox Code Playgroud)
如果我应该包含更多信息以及该信息应该是什么,请告诉我.
如何更新 - 批量 - Django数据模型的查询集中的多对多字段?
例如,我有一个名为的数据模型Photo
,另一个名为PhotoStream
.在Photo
,我有which_stream = models.ManyToManyField(PhotoStream)
.
我提取了一个Photos
被调用的查询集childhood_photos
,我需要PhotoStream
在这个查询集中的所有对象的多对多字段中添加一个新对象.我们称这个PhotoStream对象for_classmates
.
我试试childhood_photos.update(which_stream.add(for_classmates))
,但它给了我一个错误:全局名称'which_stream'没有定义.
我该怎么做这个操作?
在 Django 模板中,我遍历一组照片,并一张一张地显示它们。具体来说,现在我只有一组照片,包含 6 个对象。我像这样显示这 6 个对象:
{% for pic in picstream.photo_set.all reversed %}
<img src="{{ pic.image_file.url }}"></img>
{% endfor %}
Run Code Online (Sandbox Code Playgroud)
添加reversed
到语句中给了我所需排序的 6 个对象(即首先是最新的 id)。
接下来,我想从photo_set
. 我添加|slice:":4"
到picstream.photo_set.all
以实现此目的。问题是,它从我想要的排序中切断了前两个对象。
这似乎也应已扭转列表的方式第一,和切片后?需要一种简单的方法来做到这一点,而不会影响性能。
我正在尝试使用 celery 和 redis 队列为我的 Django 应用程序执行任务。Supervisord 通过 安装在主机上apt-get
,而 celery 驻留在我系统上的特定 virtualenv 中,通过`pip 安装。
结果,我似乎无法celery
通过 supervisord 运行命令。如果我从 virtualenv 内部运行它,它可以正常工作,在它之外,它不会。如何让它在我当前的设置下运行?解决方案是否只是celery
通过 apt-get安装,而不是在 virtualenv 中安装?请指教。
我在 /etc/supervisor/conf.d 中的 celery.conf 是:
[program:celery]
command=/home/mhb11/.virtualenvs/myenv/local/lib/python2.7/site-packages/celery/bin/celery -A /etc/supervisor/conf.d/celery.conf -l info
directory = /home/mhb11/somefolder/myproject
environment=PATH="/home/mhb11/.virtualenvs/myenv/bin",VIRTUAL_ENV="/home/mhb11/.virtualenvs/myenv",PYTHONPATH="/home/mhb11/.virtualenvs/myenv/lib/python2.7:/home/mhb11/.virtualenvs/myenv/lib/python2.7/site-packages"
user=mhb11
numprocs=1
stdout_logfile = /etc/supervisor/logs/celery-worker.log
stderr_logfile = /etc/supervisor/logs/celery-worker.log
autostart = true
autorestart = true
startsecs=10
stopwaitsecs = 600
killasgroup = true
priority = 998
Run Code Online (Sandbox Code Playgroud)
我的 Django 项目的文件夹结构是:
/home/mhb11/somefolder/myproject
??? myproject
? ??? celery.py # The Celery app …
Run Code Online (Sandbox Code Playgroud) 我有一个名为的父列表parent_list
,以及我要过滤的两个子集parent_list
.这些子集也是python列表,它们被称为filter1
和filter2
.
我可不可以做:
final_list = [object for object in parent_list if object.pk not in filter1 or filter2]
Run Code Online (Sandbox Code Playgroud)
或者我是否需要单独进行此过滤,如:
intermediate_list = [object for object in parent_list if object.pk not in filter1]
final_list = [object for object in intermediate_list if object.pk not in filter2]
Run Code Online (Sandbox Code Playgroud)
我无法从python列表推导的文档中明确找到答案.
Django调试工具栏是一个很好的工具,可以分析缓慢的SQL查询-等等。我可以在Django应用中针对GET响应执行此操作。我的问题是:如何配置(和优化)我的POST响应?
在 Django 应用程序中,我可以访问用户会话,然后使用flat=True
. 例如我在做:
Session.objects.filter(last_activity_gte=time_window).values_list('user_id',flat=True)
Run Code Online (Sandbox Code Playgroud)
但结果受到重复和None
值的污染。如何执行相同的查询并过滤掉 None 或重复项?
一种方法是:
time_window = timezone.now() - timedelta(minutes=5)
user_ids = Session.objects.filter(last_activity_gte=time_window).values_list('user_id',flat=True)
user_ids = [id for id in user_ids if id is not None]
user_ids = set(user_ids)
Run Code Online (Sandbox Code Playgroud)
但我想知道我是否可以在查询数据库时直接实现这一点,这样会更快。性能至关重要。
如果有人感兴趣,我正在使用https://github.com/Bouke/django-user-sessions来访问 Django 会话对象作为 ORM 对象
我有一个基于类的 django 模板DetailView
。我已经覆盖了 的get_context_data
方法DetailView
,使用它来传递context
我在模板中显示的一些必需变量(本质上是一个图像)。这就是我所做的一切。
我如何确保我的这个特定的 django 模板永远不会被任何浏览器缓存?通过各种渠道涉水告诉我,我需要过骑HttpResponse
在dispatch
实现无缓存的方法?
据我所知,我需要设置Cache-Control
,Pragma
,Expiry
等我只是一直无法作出关于是否要前进(或如何)过度乘坐调度方法。有人可以给我一个简单的说明性示例,说明他们将如何为这样的模板实现无缓存?
django ×8
python ×4
django-views ×2
celery ×1
ddos ×1
django-orm ×1
html ×1
httpresponse ×1
nginx ×1
pgbouncer ×1
redis ×1
security ×1
sms ×1
supervisord ×1