小编tap*_*pan的帖子

运行django时,Twisted服务器意外崩溃

我正在使用来自此站点的django-on-twisted脚本运行django应用程序.

所有请求都由nginx服务器提供服务,该服务器反向代理相关的扭曲请求.我有一个API的URL设置,它基本上只接收get请求并在发送响应之前对get参数进行一些处理.但是,当特定客户端访问api时,扭曲的服务器才会关闭.粘贴在下面的是Nginx日志:

the.ip.of.client - - [21/Apr/2012:11:30:36 -0400] "GET /api/url/?get=params&more=params HTTP/1.1" 499 0 "-" "Java/1.6.0_24"
Run Code Online (Sandbox Code Playgroud)

扭曲的日志只显示扭曲的停止工作.通过错误代码499,我假设客户端意外关闭了连接,我没有问题.客户是否收到回复对我来说并不重要.这是相关的django视图:

def api_url(request):
    if request.GET:
        get_param = request.GET.get('get', [''])[0]
        more_param = request.GET.get('more', [''])[0]
        #some processing here based on the get params
        return HttpResponse('OK')
    else:
        raise Http404
Run Code Online (Sandbox Code Playgroud)

来自客户端的请求是有效请求,不会以不利方式影响处理.我从shell测试过它.当我在django开发服务器上尝试它时,它也以相同的方式崩溃,而没有留下任何接收请求的痕迹.从浏览器进行测试时,一切都运行良好.此外,扭曲的服务器适用于所有常规用例.这是我第一次遇到问题.任何帮助或指示将不胜感激.

python django twisted nginx

38
推荐指数
1
解决办法
1742
查看次数

使用bash在文本文件中提取2个标记之间的行

我有一个文本文件,如下所示:

random useless text 
<!-- this is token 1 --> 
para1 
para2 
para3 
<!-- this is token 2 --> 
random useless text again
Run Code Online (Sandbox Code Playgroud)

我想在令牌之间提取文本(当然不包括令牌).我尝试使用##和%%来提取数据,但它不起作用.我认为它不适用于操纵如此大的文本文件.有什么建议我怎么做?也许awk或sed?

bash

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

允许用户将标记添加到谷歌地图并获取坐标

我想要做的是在我的网站上嵌入一个地图,并允许用户在其上放置标记(如果有一种方法可以控制用户可以在地图上放置多少个标记?)我还想获得坐标这些标记一旦被放在地图上.从我为谷歌地图javascript api V3阅读的文档,我可以自己在地图上放置标记,但我没有看到让用户把它们放在地图上的方法.有办法吗?

javascript google-maps google-maps-api-3

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

django 1.6.1中交易的奇怪行为

我使用transaction.atomic作为django 1.6中事务的上下文管理器.我想在一个事务中有一段代码,它有几个网络调用和一些数据库写入.我看到非常奇怪的行为.每隔一段时间(也许是20次中的1次)我注意到发生了部分回滚,没有引发任何异常并且视图执行没有任何错误.我的应用程序托管在heroku上,我们使用heroku postgres v9.2.8.伪代码:

from django.db import transaction

def some_view(request):

    try:
        with transation.atomic():
            network_call_1()
            db_write_1.save(update_fields=['col4',])
            db_write_2.save(update_fields=['col3',])
            db_write_3.save(update_fields=['col1',])
            network_call_2()
            db_write_4.save(update_fields=['col6',])
            db_write_5.bulk_create([object1, object2])
            db_write_6.bulk_create([object1, object2])
    except Exception, e:
        logger.error(e)

    return HttpResponse()
Run Code Online (Sandbox Code Playgroud)

我注意到的行为是,在没有引发任何异常的情况下,db write 1-3已经回滚并且其余的已经完成,或者db write 1已经回滚并且其余已经完成,依此类推.我不明白为什么会发生这种情况.首先,如果存在回滚,那么它不应该是事务的完全回滚吗?如果有回滚不应该引发异常,以便我知道发生了回滚?每次发生这种情况时,都没有引发异常,代码只是继续执行并返回一个成功的HttpResponse.

相关设置:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': 'mydb',
        'USER': 'root',
        'PASSWORD': 'root',
        'HOST': 'localhost',
        'PORT': '5432',
    },
}
CONN_MAX_AGE = None
Run Code Online (Sandbox Code Playgroud)

自从几天以来,这个错误让我感到困惑.任何线索都会有很大的帮助!

django postgresql transactions heroku

6
推荐指数
1
解决办法
1208
查看次数

Jquery自动完成,如果找不到匹配项,则在下拉列表中显示"找不到匹配项",但不允许关注它

问题就是这一切.我的jquery autocomplete从我自己的apis获取源代码.如果找不到任何匹配项,则只返回"找不到匹配项",然后显示在下拉列表中.当用户关注此时,框中的文本将更改为"找不到匹配项".我想要做的是在下拉列表中显示"找不到匹配项",但要使其无法对焦/可选择.这是我现在的代码:

$(document).ready(function() {
    $("input#id_address").autocomplete({
        delay: 300,
        minLength: 3,
        source: function(request, response) {
            $.getJSON("/pin/cache/", {q:encodeURI(request.term)}, function(results) {
                res = results.results;
                response($.map(res, function(item) {
                    return {
                        label: item.address,
                        value: item.address,
                        lat: parseFloat(item.lat),
                        lng: parseFloat(item.lng)
                    }
                })); 
            });
        },
        select: function(event, ui) {
            if (ui.item.value == 'no matches found') {
                return;
            }
            else {
                $("#id_address").val(ui.item.value);
                var pos = new google.maps.LatLng(ui.item.lat, ui.item.lng);
                map.setCenter(pos);
                map.setZoom(14);
                placeMarker(pos);
            }
        },
    });
});
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,我正在使用if else循环检查select:function中的"找不到匹配项",如果未找到匹配项,则不执行任何操作.但是,仍然会在焦点上填写"找不到匹配"的文字.我希望找到匹配项时在焦点上填写文本的默认功能,但是当找不到匹配项时,下拉列表应该是不可聚焦的.有什么建议 ?

javascript jquery jquery-autocomplete jquery-ui-autocomplete

5
推荐指数
1
解决办法
4055
查看次数