Versuchen Sie, Python von Ruby aus mit Sparsamkeit aufzurufen

install

mac


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

example

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

Hinweis: Versuchen Sie es zuerst mit Python 2

Tun Sie fast entsprechend der Seite

Definition der Sparsamkeitsdatei

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 )
}

Erstellen Sie Ruby- und Python-Dateien

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

Erstellen Sie server.py

Schreiben Sie den Verarbeitungsteil in diese

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();

schreibe Ruby Client

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()

Lauf

Im Referenzlink

python server.py
ruby client.rb
6 ## 1+5 Antworten
9 ##Maximale Antwort für 9 und 7

Recommended Posts

Versuchen Sie, Python von Ruby aus mit Sparsamkeit aufzurufen
Versuchen Sie es mit Python.
Probieren Sie die Python-Ausgabe mit Haxe 3.2 aus
Versuchen Sie, Python mit Try Jupyter auszuführen
Versuchen Sie die Gesichtserkennung mit Python
Mit Skype benachrichtigen Sie mit Skype von Python!
Ich habe versucht, die Python-Bibliothek von Ruby mit PyCall zu verwenden
Versuchen Sie es mit Python + Beautiful Soup
Scraping mit Node, Ruby und Python
Verwenden von Rstan aus Python mit PypeR
Installieren Sie Python von der Quelle mit Ansible
Dynamischer Proxy mit Python, Ruby, PHP
Versuchen Sie, Facebook mit Python zu betreiben
Versuchen Sie die Singularwertzerlegung mit Python
Rufen Sie popcount von Ruby / Python / C # auf
Führen Sie Aprili von Python auf Orange aus
Versuchen Sie die Gesichtserkennung mit Python + OpenCV
Rufen Sie Python von Nim mit Nimpy auf
Versuchen Sie die Frequenzsteuerungssimulation mit Python
Laden Sie fbx aus Python mitinema4d
Versuchen Sie es mit Amazon DynamoDB von Python
Versuchen Sie Python
[Python] Versuchen Sie, Zeichen aus Bildern mit OpenCV und pyocr zu erkennen
Sammeln von Informationen von Twitter mit Python (Twitter API)
Versuchen Sie, Farbfilme mit Python zu reproduzieren
Empfangen Sie Textdaten von MySQL mit Python
Holen Sie sich HTML von Element mit Python-Selen
Versuchen Sie, sich mit Python bei qiita anzumelden
[Hinweis] Mit Python Daten von PostgreSQL abrufen
Spielen Sie eine Audiodatei von Python mit Interrupt ab
Erstellen Sie mit python3 eine Wortwolke aus Ihrem Tweet
Versuchen Sie eine Formel mit Σ mit Python
Versuchen Sie, mit Binärdaten in Python zu arbeiten
Tweet von Python mit Twitter Developer + Tweepy
Hinweis für Pyjulia, die Julia aus Python anruft
Versuchen Sie, Python mit Google Cloud-Funktionen zu verwenden
Geschäftseffizienz von Grund auf mit Python
Mit openssl verschlüsselte Dateien werden mit openssl aus Python entschlüsselt
Bearbeiten von Azure CosmosDB aus Python Part.2
Bildaufnahme von der Kamera mit Python + OpenCV
Erste Schritte mit Dynamo von Python Boto
Versuchen Sie HTML-Scraping mit der Python-Bibliothek
Scraping von einer authentifizierten Site mit Python
Mit Ruby (Rails) verschlüsseln und mit Python entschlüsseln
Verwenden von C ++ - Funktionen aus Python mit pybind11
Einfaches Web-Scraping mit Python und Ruby
Versuchen Sie, eine Karte mit Python + Cartopy 0.18.0 zu zeichnen
Versuchen Sie etwas wie Python für-else in Ruby
[Fortsetzung] Versuchen Sie den Zugriff auf das SPS-Register mit Python
Versuchen Sie, Python: Lambda zuzuweisen oder zu wechseln
[Für Anfänger] Versuchen Sie Web Scraping mit Python
Der Weg zum Kompilieren zu Python 3 mit Thrift
Versuchen Sie, den RSS-Feed von arXiv mit Python von Raspeye auf Twitter zu twittern
Sammeln von Informationen von Twitter mit Python (Umgebungskonstruktion)
nginxparser: Versuchen Sie, die nginx-Konfigurationsdatei mit Python zu analysieren
FizzBuzz in Python3
CSV-Ausgabe der Google-Suche mit [Python]! 【Einfach】
Scraping mit Python
Versuchen Sie, mit Talking Head Anime aus einem einzigen Bild zu verschönern [Python-Vorbereitung]
Wie man Spaß am Programmieren mit Minecraft hat (Ruby, Python)