2011-10-30 23 views
10

Tôi đang di chuyển ứng dụng gae của mình sang python 2.7. Đây là app.yaml mới của tôi:Cách di chuyển app.yaml của tôi sang 2.7?

application: webfaze 
version: main 
runtime: python27 
api_version: 1 
threadsafe: true 

handlers: 
- url: /mapreduce(/.*)? 
    script: mapreduce/main.application 

- url: /(.*\.(html|css|js|gif|jpg|png|ico|swf)) 
    static_files: static/\1 
    upload: static/.* 
    expiration: "1d" 

- url: .* 
    script: main.application 

- url: /task/.* 
    script: main.application 
    login: admin 

Nhưng tôi nhận được thông báo lỗi này:

Error parsing yaml file: 
Invalid object: 
threadsafe cannot be enabled with CGI handler: mapreduce/main.application 
    in "webfaze/app.yaml", line 22, column 1 

Bạn có thể cho tôi biết làm thế nào để giải quyết lỗi?

Trả lời

7

Kiểm tra source code, có vẻ mà bạn cần phải xác định con đường xử lý của bạn mà không cần bất kỳ dấu gạch chéo:

if (handler.script and (handler.script.endswith('.py') or 
     '/' in handler.script)): 
     raise appinfo_errors.ThreadsafeWithCgiHandler(
        'threadsafe cannot be enabled with CGI handler: %s' % 
        handler.script) 

Move application.py vào thư mục gốc của dự án của bạn và thay đổi con đường của handler cho phù hợp.

+0

Cảm ơn sự thật là tôi chỉ có thể bỏ qua phần mapreduce vì tôi không sử dụng nó vào lúc này. Bây giờ cập nhật thông qua kiểm tra cú pháp và tôi tò mò muốn xem những gì đã xảy ra bây giờ mà tôi chỉ chạy 'set_default_version' –

+7

Hoặc đặt tên là' mapreduce.main.application'. –

+0

Cảm ơn bạn @Nick Johnson cho giải pháp hoàn chỉnh. Tôi có thể di chuyển toàn bộ ứng dụng sang python 2.7 với ít nỗ lực :-) –

7

Thay đổi:

- url: /mapreduce(/.*)? 
    script: mapreduce/main.application 

Để:

- url: /mapreduce(/.*)? 
    script: mapreduce.main.application 

Bạn cũng có thể cần thêm một __init__.py vào thư mục 'MapReduce' nếu không tồn tại đã có. Điều đó sẽ làm cho python diễn giải thư mục như là một mô-đun.

+0

Tôi đã thử phiên bản mới nhất và có vẻ như nó đã thay đổi từ ứng dụng sang APP – wonglik

+0

@wonglik Theo 'phiên bản mới nhất' phiên bản đó sẽ là. Tôi đang chạy v.1.7.0 của SDK và thay đổi 'ứng dụng' thành 'ứng dụng' ném một lỗi 500 (Máy chủ). –

+0

Xin lỗi. Tôi có nghĩa là phiên bản mới nhất của MapReduce Bundle - 1.6.2 được lấy từ đây https://developers.google.com/appengine/downloads – wonglik

Các vấn đề liên quan