Un serveur HTTP haute performance pour Ruby
require 'agoo'
Agoo :: Server . init ( 6464 , './root' )
class MyHandler
def call ( req )
[ 200 , { } , [ "hello world" ] ]
end
end
handler = MyHandler . new
Agoo :: Server . handle ( :GET , "/hello" , handler )
Agoo :: Server . start ( )
# To run this example type the following then go to a browser and enter a URL
# of localhost:6464/hello.
#
# ruby hello.rb require 'agoo'
class Query
def hello
'hello'
end
end
class Schema
attr_reader :query
def initialize
@query = Query . new ( )
end
end
Agoo :: Server . init ( 6464 , './root' , thread_count : 1 , graphql : '/graphql' )
Agoo :: Server . start ( )
Agoo :: GraphQL . schema ( Schema . new ) {
Agoo :: GraphQL . load ( %^type Query { hello: String }^ )
}
sleep
# To run this GraphQL example type the following then go to a browser and enter
# a URL of localhost:6464/graphql?query={hello}
#
# ruby hello.rb gem install agoo
Comme Agoo prend en charge les applications compatibles avec des racks, vous pouvez l'utiliser pour les applications Rails:
Ajouter Agoo au Gemfile:
# Gemfile
gem 'agoo'
Installez le bundle:
$ bundle install
Démarrez les rails avec Agoo comme serveur:
$ rails server -u agoo
Profitez de la performance accrue!
Agoo est japonais pour un type de poisson volant. Ce joyau vole. Il s'agit d'un serveur HTTP haute performance qui sert des ressources statiques à des centaines de milliers de récupérations par seconde. Un simple gestionnaire de rubis Hello Hellod à plus de 100 000 demandes par seconde sur un ordinateur de bureau. Cela place Agoo à environ 85 fois plus rapide que Sinatra et 1000 fois plus rapide que les rails. Dans les deux cas, la latence était deux ordres de grandeur inférieure ou plus. Découvrez les repères.
Agoo prend en charge l'API Ruby Rack qui permet d'utiliser des gemmes compatibles à rack telles que Hanami et Rails. Agoo prend également en charge WebSockets et SSE.
Agoo n'est pas disponible sur Windows.
Certains exemples peuvent être trouvés dans l' example de répertoire. Une autre promenade documentée à travers des exemples d'utilisation d'Agoo figurent dans le répertoire misc . Ces exemples sont décrits dans les fichiers de Markdown. Certains comme l'exemple de la chanson sont simples tandis que d'autres comme la colle sont plus complexes. Les exemples de marche documentés sont:
La version 2.11.0 prend en charge les abonnements GraphQL. Prise en charge TLS (SSL, HTTPS) ajoutée. Exemples pour les deux. En rapport, le repo GraphQL-Benchmark a été donné au Benchmarker.
Agoo a un nouveau module GraphQL avec une API simple et facile à utiliser. Découvrez les exemples Hello ou Song. Une introduction instrumentale de GraphQL avec Ruby est une promenade.
Agoo prend la première place en tant que débit le plus élevé sur les références Web-Frameworks. La latence n'était pas en haut, mais la version 2.5.2 améliore cela. L'Agoo-C le compose en haut. Le serveur Web le plus rapide dans toutes les langues.
Agoo en cluster est prêt. Pour une application plus lente et une machine avec plusieurs cœurs, une amélioration significative est réalisée. L'application doit être apatride en ce que aucune donnée n'est partagée entre les travailleurs.
WebSocket et SSE sont pris en charge et un PR a été soumis à la mise à jour de la spécification du rack. Allez à l'extension du rack proposé et jetez un œil et un coup de pouce ou un cœur si vous l'aimez.
Agoo dessert désormais des actifs statiques de rails plus de 8000 fois plus rapides que le PUMA par défaut. C'est vrai, 8000 fois plus vite.
Voir fichier: ChangeLog.md
Les sorties sont faites à partir de la branche principale. La branche par défaut pour le paiement est la branche de développement. Les demandes de traction doivent être faites contre la branche de développement.
Obtenez Agoo pris en charge avec un abonnement Tidelift. Les mises à jour de sécurité sont prises en charge.
Documentation : http://rubydoc.info/gems/agoo ou http://www.ohler.com/agoo/doc/index.html
GitHub Repo : https://github.com/ohler55/agoo
Rubygems Repo : https://rubygems.org/gems/agoo
Wabur Repo : https://github.com/ohler55/wabur a une option pour utiliser Agoo
Répo Perfe : https://github.com/ohler55/perfer