Essayez d'appeler Python depuis Ruby avec une économie

install

mac


brew install thrift # thrift
gem install thrift # ruby
pip install thrift # python

example

Reportez-vous à https://www.ibm.com/developerworks/jp/opensource/library/os-cloud-apache-thrift/

Remarque: essayez d'abord avec Python 2

Faites-le presque selon la page

définition du fichier d'épargne

proj.thrift


# proj.thrift

namespace py demoserver
namespace rb demoserver

/* All operands are 32-bit integers called a Value */
typedef i32 Value
typedef i32 Result

/* Math service exposes an some math function */
service MyMath
{
  Result add( 1: Value op1, 2: Value op2 ),
  Result mul( 1: Value op1, 2: Value op2 ),
  Result min( 1: Value op1, 2: Value op2 ),
  Result max( 1: Value op1, 2: Value op2 )
}

Créer des fichiers Ruby et Python

thrift --gen py proj.thrift
thrift --gen rb proj.thrift

Créer server.py

Écrivez la partie traitement dans ce

server.py


#!/usr/bin/python

import sys

sys.path.append('./gen-py')

from thrift.transport import TSocket
from thrift.transport import TTransport
from thrift.protocol import TBinaryProtocol
from thrift.server import TServer
import demoserver.MyMath

class MathImpl( demoserver.MyMath.Iface ):
    def add( self, op1, op2 ):
        return op1 + op2
    def mul( self, op1, op2 ):
        return op1 * op2
    def max( self, op1, op2 ):
        return max([op1, op2])
    def min( self, op1, op2 ):
        return min([op1, op2])

if __name__ == '__main__':

    processor = demoserver.MyMath.Processor( MathImpl() )
    transport = TSocket.TServerSocket( port = 18181 )
    tbfactory = TTransport.TBufferedTransportFactory()
    pbfactory = TBinaryProtocol.TBinaryProtocolFactory()

    server = TServer.TThreadedServer( processor, transport, tbfactory, pbfactory )

    print('Starting the Math Server...')

    server.serve();

écrire client ruby

client.rb


# Make thrift-generated code visible
$:.push('./gen-rb')

require 'thrift'
require 'my_math'

begin

    # Build up the Thrift stack
    transport = Thrift::BufferedTransport.new(Thrift::Socket.new('localhost', 18181))
    protocol = Thrift::BinaryProtocol.new(transport)
    client = Demoserver::MyMath::Client.new(protocol)
    transport.open()

    # Try an add operation
    result = client.add( 1, 5 )
    puts result.inspect

    # Try a max operation
    result = client.max( 9, 7 )
    puts result.inspect

    transport.close()

Exécuter

Dans le lien de référence

python server.py
ruby client.rb
6 ## 1+5 réponses
9 ##Réponse maximale pour 9 et 7

Recommended Posts

Essayez d'appeler Python depuis Ruby avec une économie
Essayez de gratter avec Python.
Essayez la sortie Python avec Haxe 3.2
Essayez d'exécuter Python avec Try Jupyter
Essayez la reconnaissance faciale avec Python
Avec skype, notifiez avec skype de python!
J'ai essayé d'utiliser la bibliothèque Python de Ruby avec PyCall
Essayez de gratter avec Python + Beautiful Soup
Scraping avec Node, Ruby et Python
Utilisation de Rstan de Python avec PypeR
Installez Python à partir des sources avec Ansible
Proxy dynamique avec python, ruby, PHP
Essayez d'exploiter Facebook avec Python
Essayez la décomposition de valeurs singulières avec Python
Appeler popcount depuis Ruby / Python / C #
Exécutez Aprili depuis Python sur Orange
Essayez la reconnaissance faciale avec python + OpenCV
Appelez python de nim avec Nimpy
Essayez la simulation de contrôle de fréquence avec Python
Charger fbx depuis python avec cinema4d
Essayez d'utiliser Amazon DynamoDB à partir de Python
Essayez Python
[Python] Essayez de reconnaître les caractères des images avec OpenCV et pyocr
Collecter des informations sur Twitter avec Python (API Twitter)
Essayez de reproduire un film couleur avec Python
Recevoir des données textuelles de mysql avec python
Obtenir le code HTML de l'élément avec du sélénium Python
Essayez de vous connecter à qiita avec Python
[Note] Obtenir des données de PostgreSQL avec Python
Lire un fichier audio à partir de Python avec interruption
Créez wordcloud à partir de votre tweet avec python3
Essayez une formule utilisant Σ avec python
Essayez de travailler avec des données binaires en Python
Tweet de python avec Twitter Developer + Tweepy
Remarque pour Pyjulia appelant Julia depuis Python
Essayez d'utiliser Python avec Google Cloud Functions
Efficacité commerciale à partir de zéro avec Python
Décrypter les fichiers cryptés avec openssl depuis python avec openssl
Manipulation d'Azure CosmosDB à partir de Python Part.2
Acquisition d'images depuis une caméra avec Python + OpenCV
Premiers pas avec Dynamo de Python boto
Essayez le scraping HTML avec la bibliothèque Python
Scraping depuis un site authentifié avec python
Crypter avec Ruby (Rails) et décrypter avec Python
Utilisation des fonctions C ++ de python avec pybind11
Scraping Web facile avec Python et Ruby
Essayez de dessiner une carte avec python + cartopy 0.18.0
Essayez quelque chose comme Python for-else dans Ruby
[Suite] Essayez l'accès au registre PLC avec Python
Essayez d'attribuer ou de changer avec Python: lambda
[Pour les débutants] Essayez le web scraping avec Python
La route de la compilation vers Python 3 avec Thrift
Essayez de tweeter le flux RSS d'arXiv sur Twitter avec python de Raspeye
Collecter des informations depuis Twitter avec Python (construction de l'environnement)
nginxparser: essayez d'analyser le fichier de configuration nginx avec Python
FizzBuzz en Python3
Sortie CSV de la recherche Google avec [Python]! 【Facile】
Grattage avec Python
Essayez d'embellir avec Talking Head Anime à partir d'une seule image [préparation python]
Comment profiter de la programmation avec Minecraft (Ruby, Python)