小编Jar*_*iuk的帖子

当客户端有连接时,django上运行于heroku的工作人员正挂在帖子上

我们在heroku上运行django/gunicorn服务器.我们的大多数用户都位于移动网络不是那么好的国家,因此他们经常会有不稳定的连接.

我们的大多数请求都是来自移动设备的"原始帖子",似乎即使POST请求未完全传输,该请求也已被发送,由一名枪支工作人员处理.当工作人员试图处理请求并读取数据时,它只是挂起等待剩余的数据.虽然这种行为对于以"流"模式读取文件/图像数据是有意义的,但在我们的情况下没有任何意义,因为我们的所有帖子都相对较小,并且可以由Web服务器作为一个整体轻松读取,然后转发给我们的gunicorn工人.

当我们并行提出许多此类请求时,这种早期切换会导致麻烦 - 因为所有工作人员都可能被阻止.目前,我们通过增加工人/动力的数量来解决这个问题,但这是相当昂贵的.我找不到任何方法强制web服务器或gunicorn等待,只有在完全传输后才将请求转发给工作人员.

有没有办法让heroku的web服务器/ gunicorn只在从客户端完全传输(由服务器完全接收)时将请求转移给gunicorn worker?

一些示例代码(我们添加了newrelic'per-instruction'跟踪以确保这是导致问题的确切行):

def syncGameState(request):
    transaction = agent.current_transaction()
    with agent.FunctionTrace(transaction, "syncGameState_raw_post_data", 'Python/EndPoint'):
        data = request.raw_post_data
    with agent.FunctionTrace(transaction, "syncGameState_gameStateSyncRequest", 'Python/EndPoint'):
        sync_request = sync_pb2.gameStateSyncRequest()
    with agent.FunctionTrace(transaction, "syncGameState_ParseFromString", 'Python/EndPoint'):
        sync_request.ParseFromString(data)
Run Code Online (Sandbox Code Playgroud)

以下是此示例慢速请求的新Relic测量值(它是一个带有7K数据的POST).阅读POST需要99%的方法时间....

在此输入图像描述

python django post heroku gunicorn

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

Drawable的mutate方法Android 1.6中的NullPointerException

当在Android 1.6上使用带有列表状态Drawable的mutate时,我总是得到一个空指针异常.它在更高的Android版本上完美运行.我使用默认的android list_selector_background作为drawable来变异,我需要改变它,否则按下背景变得非常凌乱 - >当按下一个或多个时,它们会变得突出显示.

该项目在这里:

http://code.google.com/p/tree-view-list-android/

这里有相关的代码:http://code.google.com/p/tree-view-list-android/source/browse/src/pl/polidea/treeview/AbstractTreeViewAdapter.java#205

return activity.getResources()
                    .getDrawable(android.R.drawable.list_selector_background)
                    .mutate();
Run Code Online (Sandbox Code Playgroud)

堆栈跟踪如下:

3-11 11:37:39.973: ERROR/AndroidRuntime(5304): java.lang.NullPointerException
03-11 11:37:39.973: ERROR/AndroidRuntime(5304):     at android.graphics.drawable.StateListDrawable.mutate(StateListDrawable.java:227)
03-11 11:37:39.973: ERROR/AndroidRuntime(5304):     at pl.polidea.treeview.AbstractTreeViewAdapter.getDrawableOrDefaultBackground(AbstractTreeViewAdapter.java:201)
03-11 11:37:39.973: ERROR/AndroidRuntime(5304):     at pl.polidea.treeview.AbstractTreeViewAdapter.populateTreeItem(AbstractTreeViewAdapter.java:210)
03-11 11:37:39.973: ERROR/AndroidRuntime(5304):     at pl.polidea.treeview.AbstractTreeViewAdapter.getView(AbstractTreeViewAdapter.java:153)
03-11 11:37:39.973: ERROR/AndroidRuntime(5304):     at android.widget.AbsListView.obtainView(AbsListView.java:1273)
03-11 11:37:39.973: ERROR/AndroidRuntime(5304):     at android.widget.ListView.makeAndAddView(ListView.java:1658)
03-11 11:37:39.973: ERROR/AndroidRuntime(5304):     at android.widget.ListView.fillDown(ListView.java:637)
03-11 11:37:39.973: ERROR/AndroidRuntime(5304):     at android.widget.ListView.fillFromTop(ListView.java:694)
03-11 11:37:39.973: ERROR/AndroidRuntime(5304):     at android.widget.ListView.layoutChildren(ListView.java:1516)
03-11 11:37:39.973: ERROR/AndroidRuntime(5304):     at android.widget.AbsListView.onLayout(AbsListView.java:1112)
03-11 11:37:39.973: ERROR/AndroidRuntime(5304):     at android.view.View.layout(View.java:6569)
03-11 11:37:39.973: ERROR/AndroidRuntime(5304):     at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1119) …
Run Code Online (Sandbox Code Playgroud)

android state nullpointerexception selector drawable

3
推荐指数
1
解决办法
1906
查看次数