1

PyISAPIeを介して IIS 7 にweb.py単一ファイル APIを展開しているときに問題が発生しました。今日はそれについて話します。

PyISAPIe を使用して、IIS 7 にいくつかの Django Web アプリケーションを正常に展開できました。Django サイトで使用したIsapi.pyモジュールは次のようになります。

from django.core.handlers.wsgi import WSGIHandler as DjangoHandler
from Http.WSGI import RunWSGI
from Http import Env
import os
import sys
sys.path.append(r"C:\projects\myproject")
os.environ["DJANGO_SETTINGS_MODULE"] = "myproject.settings"
Base = "/"
Exclude = ["/media"]
Handler = DjangoHandler()

def Request():
  PathInfo = Env.PATH_INFO
  return RunWSGI(Handler, Base=Base)

ただし、web.py スクリプトで使用するために上記を微調整する方法がわからないため、WSGIサンプルIsapi.pyファイルから始めました。追加後、次のファイルがあります。

from Http.WSGI import RunWSGI
from Http import Env
from md5 import md5
import imp
import os

import sys
sys.path.append(r"C:\projects\otherproject\")

SCRIPT_PATH = 'C:\projects\otherproject\device_api.py'
ScriptHandlers = {
     "/": r"C:\projects\otherproject\device_api.py",
}
def RunScript(Path):
  global ScriptHandlers
  try:
    return ScriptHandlers[Path]()
  except KeyError:
    Name = '__'+md5(Path).hexdigest().upper()
    ScriptHandlers[Path] = \
      imp.load_source(Name, Env.SCRIPT_TRANSLATED).Request
    return ScriptHandlers[Path]()

Apps = {
#  "/app/django/"  : lambda P: RunWSGI(DjangoHandler()),
#  "/app/trac/"    : lambda P: RunWSGI(TracHandler),
  "/" : lambda P: RunScript(P),
}

def Request():
  Name = Env.SCRIPT_NAME
  for App, Handler in Apps.items():
    if Name.startswith(App):
        return Handler(Name)
  raise Exception, "Handler not found."

私が見落としている、または明らかに間違っていることがあると確信しています。ブラウザーでスクリプトにアクセスしようとすると、IIS から次の詳細を含む 500 応答が返されます。

Could not initialize interpreter

Traceback (most recent call last):
  File "C:\projects\pyisapie\Http\Isapi.py", line 29, in 
    from md5 import md5
  File "C:\Python26\Lib\md5.py", line 8, in 
    DeprecationWarning, 2)
  File "C:\Python26\Lib\warnings.py", line 29, in _show_warning
    file.write(formatwarning(message, category, filename, lineno, line))
Exception: Not currently processing a request

私はまださまざまな微調整などをいじっていますが、それを機能させるために何をする必要があるか正確にはわかりません. その方向での助けは本当に大歓迎です。

お時間をいただきありがとうございます。

PS: このスクリプト はdevice_api.py、 を使用して Apache2 にデプロイされてmod_wsgiいるので、スクリプト内のコードに問題はないと確信しています。

4

1 に答える 1

2

何日も苦労した後、私はついに解決策を見つけました。詳しく書きました。私はそれを置いた私のブログ投稿へのリンクを提供するつもりです. タイトルは「ガイド: PyISAPIe を使用して IIS7 に web.py をデプロイする」です。同様の問題に直面している誰かに役立つことを願っています。

ありがとうございました。

于 2011-05-14T13:28:01.273 に答える