小编OLM*_*MER的帖子

Uwsgi与gevent vs线程

首先,抱歉我的英语不好.在我的项目中,我有很多I/O网络请求.主数据存储在另一个项目中,并且访问由Web API(JSON/XML)提供,轮询.我们为每个新用户会话使用此API(获取有关用户的信息).有时,我们在等待回复时遇到问题.我们使用nginx + uwsgi + django.如您所知,Django是同步(或阻塞).我们使用uwsgi和多线程来解决网络IO等待的问题.我决定读一下gevent.我理解合作和先发制人多任务之间的区别.我希望gevent可以更好地解决这个问题的uwsgi线程(网络I/O瓶颈).但结果几乎相同.有时gevent较弱.也许某个地方我错了.请告诉我.

这是uwsgi配置示例.GEVENT:

$ uwsgi --http :8001 --module ugtest.wsgi --gevent 40 --gevent-monkey-patch
Run Code Online (Sandbox Code Playgroud)

线程:

$ uwsgi --http :8001 --module ugtest.wsgi --enable-threads --threads 40
Run Code Online (Sandbox Code Playgroud)

控制器示例:

def simple_test_action(request):
    # get data from API without parsing (only for simple I/O test)
    data = _get_data_by_url(API_URL)
    return JsonResponse(data, safe=False)

import httplib
from urlparse import urlparse
def _get_data_by_url(url):
    u = urlparse(url)
    if str(u.scheme).strip().lower() == 'https':
        conn = httplib.HTTPSConnection(u.netloc)
    else:
        conn = httplib.HTTPConnection(u.netloc)
    path_with_params = '%s?%s' % (u.path, u.query, )
    conn.request("GET", path_with_params)
    resp = …
Run Code Online (Sandbox Code Playgroud)

python django multithreading gevent uwsgi

8
推荐指数
1
解决办法
7696
查看次数

通过regexp获取列表中的字典项索引

我有一个清单:

[
  {
    'avail': 'blabla',
    'rep_main': 'qweqwe',
    ....
  },
  {
    'avail': 'asdasd',
    'rep_main': 'zxczxc',
    ....
  },
  ...
]
Run Code Online (Sandbox Code Playgroud)

我希望通过regexp获取项目的索引这就像没有regexp的版本:

[list['rep_main'] for elem in list].index('qweqwe')
Run Code Online (Sandbox Code Playgroud)

python regex indexing dictionary list

0
推荐指数
1
解决办法
110
查看次数

标签 统计

python ×2

dictionary ×1

django ×1

gevent ×1

indexing ×1

list ×1

multithreading ×1

regex ×1

uwsgi ×1