Подсчет и группировка одновременно

Вы можете сделать это с помощью асинхронных рабочих процессов F # и распараллелить ваши запросы, используя Async.Parallel. Вам также необходимо установить ограничение числа параллельных подключений .NET, которое оно позволяет, чтобы фактически обеспечить более высокий уровень параллелизма. Примерно так:

open System
open System.Net

ServicePointManager.DefaultConnectionLimit <- 20

let checkUrl url = 
  async {
    let req = WebRequest.Create(Uri(url))
    req.Proxy <- null
    req.Method <- WebRequestMethods.Http.Get
    use! resp = req.AsyncGetResponse()
    printfn "Downloaded: %s" url
    return resp.ContentLength }

[ for i in 0 .. 100 -> checkUrl (sprintf "http://www.google.com?%d" i) ]
|> Async.Parallel
|> Async.RunSynchronously
15
задан tee 28 November 2012 в 17:53
поделиться

2 ответа

Mail.find(
    :all, 
    :select => 'count(*) count, country', 
    :group => 'country', 
    :conditions => ['validated = ?', 't' ], 
    :order => 'count DESC',
    :limit => 5)

Это должно дать, Вы записываете, которые имеют атрибут страны и атрибут количества.

19
ответ дан 30 November 2019 в 23:57
поделиться

Попытка:

Mail.count(:group => 'country', :conditions => ['validated = ?', 't'])

я не уверен, что количество принимает :limit все же.

РЕДАКТИРОВАНИЕ:

я думаю, что это более читаемо:

Mail.count(:group => :country, :conditions => {:validated => true})

24
ответ дан 30 November 2019 в 23:57
поделиться
Другие вопросы по тегам:

Похожие вопросы: