folder Tahribat.com Forumları
linefolder Network - İnternet
linefolder [Soru] Google App Engine + Python Bilen Beri Gelsin



[Soru] Google App Engine + Python Bilen Beri Gelsin

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    YekteranBaymedir
    YekteranBaymedir's avatar
    Kayıt Tarihi: 10/Temmuz/2009
    Homo

    Arkadaşlar python 2.7 de ufak bi script yazdım.

    http://www.labnol.org/internet/setup-proxy-server/12890/ bu konuyu bilen bilir proxy server kuruyo python ile 

    appspot alt domain'ine.

    buradan yola çıkarak merak ettim biraz kurcaladım script dosyalarını,

    amma ve lakin kendi yazdığım script'i bir türlü hatasız çalıştıramadım appspot'da.

    Şimdi istediğim şey şu:

    xxx.appspot.com/?url=yyy

    şeklinde açtığımda main.py'de bu url parametresini nasıl alırız sonra işlem yapıp ekrana nasıl bastırırız?

    Bunu anlatsanız yeter ben buradan yürürüm :)

  2. KısayolKısayol reportŞikayet pmÖzel Mesaj
    YekteranBaymedir
    YekteranBaymedir's avatar
    Kayıt Tarihi: 10/Temmuz/2009
    Homo
    #!/usr/bin/env python
    #
    # Copyright 2007 Google Inc.
    #
    # Licensed under the Apache License, Version 2.0 (the "License");
    # you may not use this file except in compliance with the License.
    # You may obtain a copy of the License at
    #
    #     http://www.apache.org/licenses/LICENSE-2.0
    #
    # Unless required by applicable law or agreed to in writing, software
    # distributed under the License is distributed on an "AS IS" BASIS,
    # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    # See the License for the specific language governing permissions and
    # limitations under the License.
    #
    import urllib2
    import re
    from google.appengine.ext import webapp
    
    class MyRequestHandler(webapp.RequestHandler):
    	def get(self):
    		url = self.request.get("url")
    		if len(url)>0:
    			self.response.out.write('Url: ' + url + '<br>')
    			usock = urllib2.urlopen(url);
    			data = usock.read();
    			usock.close();
    			data = data.replace("'", '"');
    			s = re.findall(r'(?i)<div[\w\W]*?class="video-box"[\w\W]*?>', data);
    			if len(s)==0:
    				self.response.out.write "Offline"
    			else:
    				self.response.out.write "Online"
    		else:
    			self.response.out.write('''
    				<html>
    				<body>
    				<form method="post">
    				<p>Name: <input type="text" name="url" /></p>
    				<p><input type="submit" /></p>
    				</form>
    				</body>
    				</html>
    			''')
    
    
    app = webapp2.WSGIApplication([
        ('/', MainHandler)
    ], debug=True)
    
  3. KısayolKısayol reportŞikayet pmÖzel Mesaj
    YekteranBaymedir
    YekteranBaymedir's avatar
    Kayıt Tarihi: 10/Temmuz/2009
    Homo

    up olsun hiç mi anlayan yok aga

    server hatası veriyo yukarda verdiğim script'im

  4. KısayolKısayol reportŞikayet pmÖzel Mesaj
    buzukatak
    buzukatak's avatar
    Kayıt Tarihi: 27/Haziran/2010
    Erkek

    @Daft "/" yolunu MainHandler'a route etmişsin ancak MainHandler yok.

    Onu ya MyRequestHandler yapmalı, ya da MyRequestHandler MainHandler olarak adlandırmalısın.

    Ama herşeyden öncesi webapp ve webapp2 ile ilgili bir karmaşa var?

    Bir de bu yeni python27 apisi ile routing ve handler mapping biraz farklı bir hal aldı, CGI handler ile çalışan uygulamalar python27 runtime'ı ile garip çalışıyor ve hatta çalışmıyor. Bu yeni varsayılan threadsafe özelliği ile ilgili.

    Madem python27 ile devam ediyorsun, eski usulü (python25) göstermeyip kodunun biraz değiştirilmiş hali ve ilgili app.yaml ile örnekleyeyim.

    main.py (adını değiştirme)

    #!/usr/bin/env python
    
    import webapp2
    import urllib2
    import re
    
    class MainHandler(webapp2.RequestHandler):
    	def get(self):
    		self.response.headers['Content-Type'] = 'text/html'
    		url = self.request.get('url')
    		if len(url) > 0:
    			self.response.write('Url: ' + url + '<br>')
    			usock = urllib2.urlopen(url);
    			data = usock.read();
    			usock.close();
    			data = data.replace("'", '"');
    			s = re.findall(r'(?i)<div[\w\W]*?class="video-box"[\w\W]*?>', data);
    			if len(s)==0:
    				self.response.write("Offline")
    			else:
    				self.response.write("Online")
    		else:
    			self.response.write('''
    				<html>
    				<body>
    				<form action="/">
    				<p>Name: <input type="text" name="url" /></p>
    				<p><input type="submit" /></p>
    				</form>
    				</body>
    				</html>
    			''')
    
    app = webapp2.WSGIApplication([('/', MainHandler)], debug=True)

     

    app.yaml (daftsproxy yi kendi uygulama adın ile değiştirmek isteyebilirsin):

    application: daftsproxy
    version: 1
    threadsafe: true
    runtime: python27
    api_version: 1
    
    handlers:
    - url: /.*
      script: main.app
    

    Şuan burada çalışıyorlar, bir kaç saate silerim

    http://daftsproxy.appspot.com/?url=http://www.google.com

    http://daftsproxy.appspot.com/


    anlıyorum.
  5. KısayolKısayol reportŞikayet pmÖzel Mesaj
    YekteranBaymedir
    YekteranBaymedir's avatar
    Kayıt Tarihi: 10/Temmuz/2009
    Homo

    hacım daşşağı emilecek adamsın (tam umutlarımın tükendiği anda yetiştin)

    eyvallah.

    not: yanlış anlaşılmasın top değilim, sevgi sözcükleri :)

    2.5 de yazacak olsam neler değişirdi onu da yazabilir misin zahmet olmazsa eğer

    ha bu arada kodun neden çalışmadığına kafayı öyle takmışım ki webapp2 webapp farkına dikkat bile etmemişim.

    copy paste kod zaten oralar sadece iç kısmını ben yazdım.

    az çok python biliyorum da appengine dökümanlarından hiçbi ziq anlamamıştım.

    YekteranBaymedir tarafından 21/Eyl/13 22:08 tarihinde düzenlenmiştir
  6. KısayolKısayol reportŞikayet pmÖzel Mesaj
    buzukatak
    buzukatak's avatar
    Kayıt Tarihi: 27/Haziran/2010
    Erkek

    Rica ederim.

    Ama belgelerini okuman şart, ötesi iman gücü ile programlama oluyor :D

    Artı olarak Windows'da geliştirme yapıyorsan App Engine Launcher'dan ilgili uygulamanın loglarını iyi incele, aşağı yukarı tüm hataları oradan yakalayabilirsin.

    Eski usülde şöyle:

    daft.py:

    #!/usr/bin/env python
    
    from google.appengine.ext import webapp
    from google.appengine.ext.webapp import util
    import urllib2
    import re
    
    class MainHandler(webapp.RequestHandler):
    	def get(self):
    		self.response.headers['Content-Type'] = 'text/html'
    		url = self.request.get('url')
    		if len(url) > 0:
    			self.response.write('Url: ' + url + '<br>')
    			usock = urllib2.urlopen(url);
    			data = usock.read();
    			usock.close();
    			data = data.replace("'", '"');
    			s = re.findall(r'(?i)<div[\w\W]*?class="video-box"[\w\W]*?>', data);
    			if len(s)==0:
    				self.response.write("Offline")
    			else:
    				self.response.write("Online")
    		else:
    			self.response.write('''
    				<html>
    				<body>
    				<form action="/">
    				<p>Name: <input type="text" name="url" /></p>
    				<p><input type="submit" /></p>
    				</form>
    				</body>
    				</html>
    			''')
    
    def main():
    	app = webapp.WSGIApplication([('/', MainHandler)], debug=True)
    	util.run_wsgi_app(app)
    	
    if __name__ == '__main__':
        main()

     

    app.yaml:

    application: daftsproxy
    version: 1
    runtime: python
    api_version: 1
    
    handlers:
    - url: /.*
      script: daft.py
    buzukatak tarafından 21/Eyl/13 22:26 tarihinde düzenlenmiştir

    anlıyorum.
Toplam Hit: 843 Toplam Mesaj: 6