私はフラスコを使用してWebアプリを構築しています。それはすべての入力メッセージを保持し(ユーザーはxmlメッセージを送信します)、応答する適切なプラグインを見つけて応答をユーザーに返します。アプリは基本的なプラグインを提供していましたが、私はユーザーが自分で定義した API の下に独自のプラグインを作成するようにします。以下はアーキテクチャです。
plugins
common_plugins1.py
common_plugins2.py
templates
actions
myapp.py
しかし、私はいくつかの問題に直面しました:
- ユーザーが他のプラグインではなく自分のプラグインを呼び出すだけで、他のプラグインは彼には見えません
- 定義済みの関数または定義済みのモジュールのみをユーザーに呼び出してもらいたい
- スケーラブルにしたい
ユーザーが自分のプラグインを Python で作成してアップロードできるようにすることは可能ですか? アプリに動的にロードさせます。
ご協力いただきありがとうございます!
以下はプラグインの例です。
#coding: utf-8
import somemodule
from somemodule import *
def do(dmessage,context,default,**option):
import re
try:
_l=default.split('%|placeholder|%')
message=ModuleRequestVoice(dmessage)
r=ModuleResponseMusic()
return r.render(message,_l[0],_l[1],_l[2],_l[2])
except Exception,e:
print 'match voice error:%s'%e
return False