2009-02-01 2 views
14

गैर ब्लॉकिंग के रूप में करते हुए, मुझे web.py. मैं एक बेवकूफ समस्या से फंस गया:पाइथन के साथ कुछ बुनियादी प्रोग्रामिंग सीखते समय web.py का उपयोग http.py सर्वर

मैंने एक मुख्य लूप के साथ एक सरल कंसोल ऐप लिखा जो अलग-अलग धागे में कतार से आइटम खरीदता है। मेरा लक्ष्य वेब क्यू के माध्यम से आइटम को कतार में और कतार की रिपोर्ट स्थिति जोड़ने के लिए web.py का उपयोग करना है। i इसे मॉड्यूल के रूप में चला रहा है लेकिन इसे मेरे मुख्य ऐप में एकीकृत नहीं कर सकता है। मेरी समस्या यह है कि जब मैं app.run() के साथ http सर्वर प्रारंभ करता हूं तो यह मेरे मुख्य लूप को अवरुद्ध करता है। ने इसे thread.start_new_thread के साथ शुरू करने का भी प्रयास किया लेकिन यह अभी भी ब्लॉक है। मेरे ऐप के भीतर पृष्ठभूमि में web.py के एकीकृत http सर्वर को चलाने का एक आसान तरीका है।

संभावना घटना है कि मैं एक मौलिक missunderstanding का शिकार, होगा मदद तर्क में मेरी त्रुटि स्पष्ट करने के लिए किसी भी प्रयास कर रहा हूँ में

;।) (मेरे साथ सहन कृपया, मैं अभी शुरुआत :-)

+0

आपको इस प्रश्न का उत्तर नहीं देना चाहिए। – iny

उत्तर

6

मैं एक काम समाधान नहीं मिला -

+3

मुझे इस प्रोग्राम को Ctrl + C के साथ मारने में समस्याएं आ रही हैं, क्या कोई और पुष्टि कर सकता है? – puk

+0

इस बात से अवगत रहें कि आपको कक्षा के प्रारंभिकरण के दौरान थ्रेडिंग के प्रारंभिकरण को जोड़ना पड़ सकता है: 'def __init __ (self): threading.Thread .__ init __ (self)'। – Kyr

1

हूँ अपने मुख्य-लूप कोड को फिर से लिखने के लिए आसान नहीं होगा जिसे आप बार-बार कॉल करते हैं, और फिर उस कार्य से कॉल करें जिसे आप runsimple पर पास करते हैं ...

यह गारंटी नहीं है पूरी तरह से अपनी आवश्यकताओं को पूरा करें, लेकिन यदि आप भीड़ में हैं, तो यह सबसे आसान हो सकता है। http://www.tornadoweb.org/

1

या सिर्फ तूफान, एक API webpy जैसी ही है कि अजगर के लिए एक गैर अवरुद्ध वेबसर्वर का उपयोग करें। एक अलग मॉड्यूल में मैं अपने वेब सर्वर बनाने के लिए:

import web 
import threading 
class MyWebserver(threading.Thread): 

    def run (self): 
     urls = ('/', 'MyWebserver') 
     app = web.application(urls, globals()) 
     app.run() 

    def POST ... 

मुख्य programm में मैं सिर्फ

MyWebserver().start() 

फोन और से जो कुछ भी मैं चाहता हूँ, जबकि वेबसर्वर पृष्ठभूमि में काम होने के साथ चले जाते हैं।

+0

क्या आप एक MWE प्रदान कर सकते हैं, उनकी साइट अच्छी नहीं है – puk

0

मैंने हाल ही में Beanstalkd का उपयोग किया है ताकि अलग-अलग धागे में चलने वाले कार्यों को कतारबद्ध किया जा सके। आपका web.py हैंडलर सिर्फ एक पाइप में नौकरी छोड़ देता है और एक पूरी तरह से अलग लिपि इसे निष्पादित करता है। आप इनमें से कोई भी संख्या प्राप्त कर सकते हैं, और आपको उन्नत कतार नियंत्रण आदि का लाभ मिलता है ..