我一直在收到最奇怪的错误.我有一个人模型
class Person(models.Model):
    user = models.OneToOneField(User, primary_key=True)
    facebook_id = models.CharField(max_length=225, unique=True, null=True, blank=True)
    twitter_id = models.CharField(max_length=225, unique=True, null=True, blank=True)
    suggested_person = models.BooleanField(default=False)
Run Code Online (Sandbox Code Playgroud)
我最近添加了twitter_id字段.当我访问Django管理页面,并尝试将'person'更改为suggested_person时,我收到以下错误:
 Person with this Twitter id already exists.
Run Code Online (Sandbox Code Playgroud)
我发现这个错误非常奇怪,因为Facebook_id字段的设计方式与Twitter_id字段完全相同.
这可能是什么原因?
我最近在我的机器上安装了Munin.我得到了一切工作,数据实际上是在图表上绘制的!:)
但是,出于某种原因,当我点击每个单独的图表时,它会将我带到dynazoom页面,但它是所有纯文本,没有图像:(
这是我的apache.conf:
# Enable this for template generation
Alias /munin /var/cache/munin/www
# Enable this for cgi-based templates
#Alias /munin-cgi/static /var/cache/munin/www/static
#ScriptAlias /munin-cgi /usr/lib/munin/cgi/munin-cgi-html
#<Location /munin-cgi>
#       Order allow,deny
#       Allow from localhost 127.0.0.0/8 ::1
#       AuthUserFile /etc/munin/munin-htpasswd
#       AuthName "Munin"
#       AuthType Basic
#       require valid-user
#</Location>
<Directory /var/cache/munin/www>
        Order allow,deny
        # Allow from localhost 127.0.0.0/8 ::1
        Allow from all
        Options None
        AllowOverride None
        # This file can be used as a .htaccess file, or a part of your …Run Code Online (Sandbox Code Playgroud) 我目前使用re.findall查找并隔离字符串中哈希标记的'#'字符后的单词:
hashtags = re.findall(r'#([A-Za-z0-9_]+)', str1)
Run Code Online (Sandbox Code Playgroud)
它搜索str1并找到所有的hashtags.这可行,但它不考虑像这样的重音字符,例如:áéíóúñü¿.
如果其中一个字母在str1中,它会将标签保存到它之前的字母.例如,#yogenfrüz将是#yogenfr.
我需要能够解释所有带有德语,荷兰语,法语和西班牙语的重音字母,以便我可以保存像 #yogenfrüz
我怎么能这样做呢
我一直在观看Rick Branson的PyCon视频:Instagram上的消息传播.您可能希望观看视频以回答此问题.Rick Branson使用Celery,Redis和RabbitMQ.为了让您加快速度,每个用户都有一个redis列表供他们的主页提供.每个列表都包含由他们关注的人发布的照片的媒体ID.
例如贾斯汀比伯有150万粉丝.当他发布照片时,需要将该照片的ID插入每个粉丝的每个粉丝列表中.这称为Fanout-On-Write方法.但是,这种方法存在一些可靠性问题.它可以工作,但对于拥有数百万粉丝的Justin Bieber或Lady Gaga这样的人来说,在Web请求中执行此操作(您需要0-500毫秒才能完成请求)可能会出现问题.到那时,请求将超时.
所以Rick Branson决定使用Celery,这是一个基于分布式消息传递的异步任务队列/作业队列.任何繁重的工作,例如将媒体ID插入到关注者列表中,都可以在Web请求之外异步完成.请求将完成,芹菜将继续将ID插入所有列表.
这种方法有奇效.但同样,你不想把所有贾斯汀的追随者送到芹菜的一大块,因为它会捆绑一个芹菜工人.为什么不让多个工人同时工作,以便更快完成?卓见!你想把这个块拆分成更小的块,每个批次都有不同的工作人员.Rick Branson做了一批10,000名追随者,他使用一种叫做光标的东西,为所有Justin Bieber的粉丝插入媒体ID,直到完成为止.在视频中,他在3:56中谈到了这一点
我想知道是否有人可以解释这一点,并展示如何做到这一点的例子.我目前正在尝试尝试相同的设置.我使用Andy McCurdy的redis-py python客户端库与我的redis服务器进行通信.对于我服务的每个用户,我创建了一个redis关注者列表.
因此,ID为343的用户将拥有以下密钥的列表:
followers:343
Run Code Online (Sandbox Code Playgroud)
我还为每个用户创建了一个主页提交列表.每个用户都有自己的列表.因此ID为1990的用户将拥有以下密钥的列表:
homefeed:1990
Run Code Online (Sandbox Code Playgroud)
在"粉丝:343"redis列表中,它包含关注用户343的人的所有ID.用户343有20,007粉丝.下面,我正在检索列表中从索引0一直到结束-1的所有ID,只是为了向您展示它的样子.
>>> r_server.lrange("followers:343", 0, -1)
['8', '7', '5', '3', '65', '342', '42', etc...] ---> for the sake of example, assume this list has another 20,000 IDs.
Run Code Online (Sandbox Code Playgroud)
您看到的是关注用户343的所有用户ID的列表.
这是我的proj/mydjangoapp/tasks.py,其中包含我的insert_into_homefeed函数:
from __future__ import absolute_import
from celery import shared_task
import redis
pool = redis.ConnectionPool(host='XX.XXX.XXX.X', port=6379, db=0, password='XXXXX')
@shared_task
def insert_into_homefeed(photo_id, user_id):
    # Grab the list of all follower IDs from Redis …Run Code Online (Sandbox Code Playgroud) 我在我的应用程序中实现了一个摄像头,我想知道CGinterpolationquality是什么.关于它的作用的文档并不多.
我有以下型号.
class Location(models.Model):
    name = models.CharField(max_length = 128, blank = True)
    address =models.CharField(max_length = 200, blank= True)
    latitude = models.DecimalField(max_digits=6, decimal_places=3)
    longitude = models.DecimalField(max_digits=6, decimal_places=3)
    def __unicode__(self):
        return self.name
Run Code Online (Sandbox Code Playgroud)
如果我目前的纬度和经度是:
current_lat = 43.648
current_long = 79.404
Run Code Online (Sandbox Code Playgroud)
我做了一些研究并遇到了Haversine方程,它计算了两个位置坐标之间的距离.以下是我发现的等式:
import math
def distance(origin, destination):
    lat1, lon1 = origin
    lat2, lon2 = destination
    radius = 6371 # km
    dlat = math.radians(lat2-lat1)
    dlon = math.radians(lon2-lon1)
    a = math.sin(dlat/2) * math.sin(dlat/2) + math.cos(math.radians(lat1)) \
        * math.cos(math.radians(lat2)) * math.sin(dlon/2) * math.sin(dlon/2)
    c = 2 …Run Code Online (Sandbox Code Playgroud) 我在nginx邮件列表上发布了这个,但没有收到任何人的回复,所以我想我会在stackoverflow上给它一个破解:)
我目前在Amazon EC2上安装了一个Django应用程序.我的所有数据都是通过Gunicorn在端口8000(用于UNIX的Python WSGI HTTP服务器)上提供的.它是从Ruby的Unicorn项目移植的前叉工作者模型.我不必担心将静态内容(图像)传递给客户端,因为所有这些都是由亚马逊的S3服务为我处理的.Django通过json将内容的URL通过Gunicorn传递给客户端.然后客户端可以下载它.
我的Django应用程序托管在t1.micro实例上.以下是Amazon Web Services提供的规范:
处理器:最多2个EC2计算单元(用于短周期突发).虚拟内核:1内存:615 MiB平台:32位和64位
在这个实例上,我有3名Gunicorn工作人员和我的Django应用程序一起运行.
对于我的Nginx反向代理服务器,我还使用了t1.micro实例.我已经设置好了,一切都运行得很好.这是我的etc/nginx/sites-enabled/default配置如下:
# Gunicorn server
upstream django {
  server         10.0.10.0:8000;
}
# Serve static files and redirect any other request to Gunicorn
server {
  listen       80;
  server_name  23.0.23.23/;
  #root        /var/www/domain.com/;
  #access_log  /var/log/nginx/domain.com.access.log;
  #error_log  /var/log/nginx/domain.com.error.log;
  # Check if a file exists at /var/www/domain/ for the incoming request.
  # If it doesn't proxy to Gunicorn/Django.
  #try_files $uri @django;
  # Setup named location for Django requests and handle proxy details
  location @django { …Run Code Online (Sandbox Code Playgroud) 我有一个非常简单的问题.Nginx确实为像Gunicorn和Unicorn这样的HTTP服务器反向代理缓冲.但是,如果我有一个Elastic Load Balancer(由Amazon Web Services提供,也称为-ELB),那么在我的应用服务器前运行nginx有什么意义吗?
 Request----> ELB -------> NGINX-------> UNICORN/GUNICORN HTTP SERVER
Run Code Online (Sandbox Code Playgroud) 我一直在互联网上寻找直接的答案,但大多数解决方案都涉及使用Express并提供HTTP内容以实现安全连接.我对Node.js和socket.io 的安全Web套接字连接(wss)更感兴趣
我没有将Node.js用于HTTP请求.我使用与Node.js一起使用的socket.io模块将消息实时传递给我的应用程序.我只使用节点进行Web套接字连接.
我会简单解释一下我的设置是什么.我使用Django作为我的HTTP后端.用户向Django发出请求,Django将该请求的内容转发给Redis,Node.js在Redis的一个频道上侦听,它处理内容并将消息发送给适当的收件人.
非常简单直接.一切正常.但我担心与Node.js的websocket连接是不安全的.当Node.js向收件人发送消息时,我不希望任何人在其间窥探并拦截该消息.我想确保我的用户感到安全并相信我为他们建立的服务.
我查看了CA的自签名证书和证书.两者都提供相同级别的安全性.由于我只使用Node.js作为socket.io并且不提供HTTP内容,因此自签名证书可以正常工作(我构建的服务是针对移动设备的,而不是针对浏览器的!)
下面是我对socket.io的实现:
var io = require('socket.io').listen(8000);
var redis = require('socket.io/node_modules/redis')
var redisChannelConnection = redis.createClient(6000, "12.345.678.9");
var redisServer = redis.createClient(6000, "23.456.789.1");
// Subscribe to Redis Channel
redisChannelConnection.subscribe('messages');
io.sockets.on('connection', function (socket) {
     socket.emit('message', 'Hello World');
     }
Run Code Online (Sandbox Code Playgroud)
到目前为止,我刚刚编写了一个简单的连接函数.它可以作为普通的websocket连接.但我想使它成为一个安全的websocket连接.我有多少这样做?
谢谢您的帮助.
寻找一种在我的错误日志中添加标题、正文和用户电子邮件地址的方法,以及我的views.py 中异常的堆栈跟踪
在网上搜索了几个小时后,许多人建议编写自己的中间件,有些人建议将此类信息记录到单独的日志中。然而,知道你的代码出错的地方解决了问题的一部分,确定它影响了哪个可怜的灵魂以及在该异常期间发送了哪些请求数据对于纠正问题有很长的路要走。将这些信息放在同一个日志文件中对我来说很有意义。
目前在我的 views.py 中,我有这个简单的设置:
from django.db.models import Min, Max, Q, F, Count, Sum
from django.db import connection
from django.conf import settings
from django.http import HttpResponse, HttpResponseRedirect
from myapp.models import *
import logging
logging.basicConfig(filename="errors.log",
                    level=logging.ERROR,
                    format='%(asctime)s: %(message)s')
def random_view(request):
    if request.user.is_authenticated() and request.user.is_active:
         # generic view code goes here.
    else:
        return HttpResponse(status=401)
Run Code Online (Sandbox Code Playgroud)
这种设置在一段时间内运行良好。每次出现异常时,它都会注销时间、异常错误消息和堆栈跟踪。
如何添加 request.META、request.user.id 和 request.body 以及堆栈跟踪?
任何建议都会有所帮助。一个有效的答案,甚至更好!
谢谢