2015-01-03 12 views
5

में पाइथन स्क्रिप्ट को कॉल करना मेरे meteor ऐप को python स्क्रिप्ट को कॉल करने का सबसे अच्छा तरीका क्या है जो उल्का सर्वर-साइड कोड के समान मशीन पर रहता है? मैं बस इतना करना चाहता हूं कि उल्का पाइथन में एक फ़ंक्शन को स्ट्रिंग पास करे और पाइथन को एक स्ट्रिंग को उल्का में वापस कर दें।उल्का

मैं सोच रहा था कि मेरे पास पाइथन मॉनीटर मोंगोडब हो सकता है और मूल्यों को निकाला जा सकता है और उन्हें गणना के बाद मोंगोडब पर वापस लिख सकता है, लेकिन ऐसा लगता है कि उल्का सीधे पाइथन में फ़ंक्शन को कॉल करने के लिए बहुत साफ है।

मैं डीडीपी के लिए नया हूं और पाइथन-उल्का (https://github.com/hharnisc/python-meteor) के साथ बहुत दूर नहीं जा सका।

क्या ज़ीरोआरपीसी (http://zerorpc.dotcloud.com/) ऐसा करने का एक अच्छा तरीका है?

धन्यवाद।

उत्तर

6

शानदार सवाल।

मैंने डीडीपी और ज़ीरोआरपीसी का उपयोग करने और यहां तक ​​कि पाइथन सीधे मोंगो को लिखने के लिए देखा है।

मेरे लिए, मीटियर और पायथन टॉक करने का सबसे आसान तरीका पाइथन ऐप को फ्लास्क ऐप के रूप में स्थापित करना था और फिर फ्लास्क ऐप में एक एपीआई जोड़ना था और एपीआई के माध्यम से पाइथन से मीटोर टॉक करना था।

इस सेटअप काम कर रहा इस्तेमाल किया पाने के लिए:

यह परीक्षण करने के लिए आप कुछ इस तरह बुनियादी निर्माण कर सकते हैं (पायथन लिपि टेक्स्ट को ऊपरी मामले में परिवर्तित करता है):

from flask import Flask 
from flask.ext import restful 

app = Flask(__name__) 
api = restful.Api(app) 

class ParseText(restful.Resource): 
    def get(self, text): 
     output = text.upper() 
     return output 

api.add_resource(ParseText, '/<string:text>') 

if __name__ == '__main__': 
    app.run(debug=True) # debug=True is for testing to see if calls are working. 

फिर एपीआई को कॉल करने के परीक्षण के लिए उल्का में HTTP.get का उपयोग करें।

आप स्थानीय रूप से सब कुछ चल रहे हैं तो उल्का से कॉल शायद कुछ ऐसा दिखाई देगा, तो: Meteor.http.get("http://127.0.0.1:5000/test");

+1

मैं उल्का और ZeroRPC का उपयोग करने की कोशिश की और सिर्फ बाद 'उल्का NPM उल्का 1.3 और आदेश का उपयोग कर स्थापित नहीं मिल सका स्थापित करें - zerorpc बचाओ। उल्का 1.3 नोड 0.10.43 का उपयोग करता है जिसमें कुछ [मुद्दे] (https://github.com/meteor/meteor/issues/5124) libmsg स्थापित करते हैं, जो ज़ीरोआरपीसी की निर्भरता है। यह समाधान बहुत आसान दिखता है क्योंकि यह देशी मौसम पैकेज का उपयोग करता है। धन्यवाद! – forgetso

2

मुझे अतीत में अनुभव है कि Restful दृष्टिकोण का उपयोग करके कुछ भी लागू करने में सक्षम है।

उल्का से observeChanges ट्रिगर, अजगर शोकहारा एपीआई अंतिम बिंदुओं को एक http अनुरोध (Flask में) सर्वर से, बोतल प्रासंगिक पाइथन स्क्रिप्ट/कार्य बुला में अनुरोधों को संभालने भेजने तो, वापसी प्रतिक्रिया के साथ रखकर उल्का तो संभाल तदनुसार कॉलबैक।

वहाँ के पाठ्यक्रम में कई अन्य तरीकों आप विचार कर सकते हैं,, डीडीपी का उपयोग कर child_process आदि मैं भी पहले अजगर-उल्का का उपयोग कर विचार किया है की तरह हैं लेकिन (वह खाते शोकहारा दृष्टिकोण अधिक पोर्टेबल और स्केलेबल है को ध्यान में रखकर दोनों में के बाद एक ही मशीन, या यहां तक ​​कि विभिन्न मशीनों में ... आप अधिक अनुरोधों को संभालने के लिए अपने सर्वर का विस्तार कर सकते हैं आदि। आपको विचार मिलता है)।

हर किसी का उपयोग केस अलग है, और मैंने पाया कि RestFul appoach मेरे उपयोग के मामले के लिए सबसे अच्छा फिट है। मुझे आशा है कि आपको मेरा उत्तर उपयोगी लगेगा और आपके विचारों के विस्तार का विस्तार होगा और आपके मामले के लिए सबसे अच्छा विकल्प चुनें। सौभाग्य।