2012-05-04 15 views
20

Python 2.5'den Python 2.7'ye geçmeye çalıştım ancak her seferinde aynı hatayı almaya devam ediyorum.Google App Engine'de Python 2.7 Hatası - Threadsafe CGI işleyicisi ile etkinleştirilemiyor

Python 2.5 uygulamasında app.yaml dosyası ile çalışan ve sadece bir komut dosyası main.py ile çalışarak çok basit bir test yaptım ve gayet iyi çalışıyor. Komut, her şeyi iyi kontrol etmek için sadece bir Merhaba Dünya türü.

app.yaml

application: sparepartsfinder 
version: 1 
runtime: python 
api_version: 1 


handlers: 

- url: /blog 
    script: main.py 

- url: /blog/new_entry 
    script: main.py 

main.py

from google.appengine.ext import webapp 
from google.appengine.ext.webapp.util import run_wsgi_app 

class MainPage(webapp.RequestHandler): 
    def get(self): 
     self.response.headers['Content-Type'] = 'text/plain' 
     self.response.out.write('Hello, webapp World!') 

application = webapp.WSGIApplication(
            [('/', MainPage), 
             ('/blog', MainPage), 
             ('/blog/new_entry',MainPage), 
             ('/blog/archive/.*',MainPage)], 
            debug=True) 

def main(): 
    run_wsgi_app(application) 

if __name__ == "__main__": 
    main() 

Python 2.7 için değiştirdiğinizde her iki app.yaml üzerinde değişiklikler yaparak harfe Google App Engine belge takip edip main.py komut dosyası.

app.yaml

import webapp2 

class MainPage(webapp2.RequestHandler): 
    def get(self): 
     self.response.out.write('Hello prueba!') 

app = webapp2.WSGIApplication([('/', MainPage), 
           ('/blog', MainPage), 
           ('/blog/new_entry',MainPage), 
           ('/blog/archive/.*',MainPage)], 
           debug=True) 

Ne yazık ki yerel veya Google App Engine yeni bir yapılandırma yüklemeye çalışırken ya çalışmıyor

application: sparepartsfinder 
version: 1 
runtime: python27 
api_version: 1 
threadsafe: true 


handlers: 

- url: /blog 
    script: main.py 

- url: /blog/new_entry 
    script: main.py 

- url: /blog/archive/.* 
    script: main.py 


- url: .* 
    script: main.py 

main.py. (Her zaman aynı hatayı alırım).

Makinemdeki sorunu (hem Python 2.5 hem de 2.7) Windows XP'de anlayabiliyorum, ancak yüklediğimde değil.

2012-05-04 13:02:07 Running command: "[u'C:\Python25\python2.5.exe', '-u', 'C:\Archivos >de programa\Google\google_appengine\appcfg.py', '--no_cookies', u'[email protected]', '--passin', 'update', 'C:\Documents and Settings\SSanjuan\Mis documentos\Dropbox\Dropbox\Python\SpareParts']" Error parsing yaml file: Invalid object: threadsafe cannot be enabled with CGI handler: main.py in "C:\Documents and Settings\SSanjuan\Mis documentos\Dropbox\Dropbox\Python\SpareParts\app.yaml", line 27, column 1 2012-05-04 13:02:31 (Process exited with code 1)

cevap

30

Kullanım main.application yerine sizin app.yaml içinde main.py:

Bu

hatadır. threadsafe'u true'a ayarlamak için eski gerekir.

+0

Ancak dosya main.application nedir? Eğer değiştirirsem yeni bir hata ortaya çıkar. : Modül bulunamadı main.app args = ('Modül bulunamadı main.app',) message = 'Modül main.app bulunamadı' – user1374783

+1

Eski formda, ' main.application' (veya 'main.app'), doğrudan nokta gösterimi ile bir WSGIApplication nesnesine işaret etmelidir. Main.py cihazınız BTW'yi nerede alıyor? Proje üst dizininin altındaysa, bu dosyanın global kapsamındaki WSGIApplication nesnesinin adına göre "main.app" veya "main.application" yöntemlerinden birini kullanabilirsiniz. –

+2

Ayrıca bkz .: https://developers.google.com/appengine/docs/python/python27/using27#Configuring_WSGI_Script_Handlers –

17

Aynı sorunu yaşıyorum ve işte cevap.

Python 2.5 çalışma zamanı için, bir dosyanın yolunu belirtirsiniz - örn: script: myfolder/myfile.py.

Python 2.7 çalışma zamanı için bir Nesne belirliyorsunuz. Öyleyse, myfile.py'nin uygun bir WSGI nesnesi 'app' içerdiği varsayılarak betik olarak belirtilir: myfolder.myfile.app.

+3

tam olarak - yolunuzdaki '/' ile '/' değiştirin ve her şey yolunda! – HorseloverFat

+1

'/' by '.' değiştirdikten sonra' ImportError: Myfolder adlı bir modül yok. Çözüm: 'myfolder .__ init __. Py' – sjakobi

+1

Wow! Sadece lanetlenmişti. Teşekkürler, birkaç saat kurtardın. – Tuelho