Как я могу очистить app.yaml, оставив только верхнюю страницу для каждого скрипта?

#python #google-app-engine

#python #google-app-engine

Вопрос:

Мне нужна помощь с моим app.yaml и управлением url. У меня есть скрипты ting.py , searchandler.py и toplawfirms.py . Я создал ting.py первый, и у меня есть в app.yaml

 - url: /.*
  script: ting.py
  

и все остальные страницы объявлены в ting.py . Но я думаю, что я допустил ошибку с searchhandler.py и toplawfirms.py , не сделав их вторым уровнем. Есть ли теперь способ включить app.yaml только три скрипта, чтобы мой app.yaml выглядел как

 ...

- url: /???
  script: searchhandler.py

- url: /???
  script: toplawfirms.py

- url: /.*
  script: ting.py

...
  

чтобы я мог объявлять все остальные страницы в их скриптах?

Это то, что у меня есть сейчас:

 application: ting-1
version: 1
runtime: python
api_version: 1

handlers:

- url: /_ah/mail/. 
  script: incoming.py 
  login: admin  

- url: /stylesheets
  static_dir: stylesheets

- url: /favicon.ico
  static_files: static/images/favicon.ico
  upload: static/images/favicon.ico

- url: /image
  script: toplawfirms.py

- url: /imageupload
  script: toplawfirms.py

- url: /imagesave
  script: toplawfirms.py

- url: /imageresize
  script: toplawfirms.py

- url: /displayimage
  script: toplawfirms.py  

- url: /histogram
  script: toplawfirms.py  

- url: /testurlopen
  script: toplawfirms.py

- url: /printdb
  script: toplawfirms.py

- url: /cropimage
  script: toplawfirms.py

- url: /jquerytest
  script: toplawfirms.py 

- url: /urlopenppp
  script: toplawfirms.py

- url: /deleteone 
  script: toplawfirms.py 

- url: /enterppp 
  script: toplawfirms.py 

- url: /saveppp 
  script: toplawfirms.py 


- url: /searchhandler
  script: searchhandler.py  

- url: /site
  script: searchhandler.py


- url: /searchall
  script: searchall.py


- url: /.*
  script: ting.py

inbound_services:
- mail
  

Ответ №1:

Самый простой способ сделать это — создать одно приложение WSGI в ting.py и добавить в него все обработчики для всех ваших URL-адресов. Затем удалите все, кроме /.* сопоставления.

Комментарии:

1. Должен ли я удалить def main(): run_wsgi_app(application) if __name__ == "__main__": main() из searchhandler.py и toplawfirms.py и поместить все обработчики в ting.py ИЛИ удалить searchhandler.py и toplawfirms.py и перенести весь код в них в ting.py и использовать только ting.py ?

2. Любой из них; какой вы предпочитаете, зависит от вашего приложения. В первом случае вам следует импортировать searchhandler и toplawfirms в ting.py чтобы ссылаться на их обработчики.

Ответ №2:

Я использую обработчики из разных модулей. Я просто помещаю это в конец everthing, а затем выше, я могу делать все остальное:

 ...
# All other URLs use main.app
- url: /.*
  script: main.app
inbound_services:
- xmpp_message
- mail
builtins:
- datastore_admin: on
- remote_api: on

error_handlers:
  - file: default_error.html

libraries:
- name: jinja2
  version: latest
- name: setuptools
  version: latest
- name: markupsafe
  version: latest
- name: django
  version: latest
- name: PIL
  version: latest
- name: webob
  version: latest