pysandboxを使用して、ユーザーが自分のサーバーでコードを実行できるようにします。私はこの要求ハンドラでDjangoの内部サーバ(manage.pyのrunserver)を使用しています: Djangoリクエストハンドラでpysandboxを使用するにはどうすればよいですか?
def try_sandbox(request):
from sandbox import Sandbox
def func(a, b):
return a + b
sandbox = Sandbox()
result = sandbox.call(func, 1, 2)
return HttpResponse(result)
がページにアクセスすると、私はValueErrorを取得:
Request Method: GET
Exception Type: ValueError
Exception Value: signal only works in main thread
Exception Location: /Library/Python/2.7/site-packages/sandbox/timeout.py in limitedTime, line 45
Python Executable: /usr/bin/python
Traceback:
Django Version: 1.3.1
Python Version: 2.7.1
File "[...]views.py" in try_sandbox
77. result = sandbox.call(func, 1, 2)
File "/Library/Python/2.7/site-packages/sandbox/sandbox_class.py" in call
44. return self._call(func, args, kw)
File "/Library/Python/2.7/site-packages/sandbox/sandbox_class.py" in _call
31. return limitedTime(timeout, func, *args, **kw)
File "/Library/Python/2.7/site-packages/sandbox/timeout.py" in limitedTime
45. old_alarm = signal(SIGALRM, signalHandler)
それはこの環境でpysandboxを使用することが可能です?
(私は私がpysandbox 1.1を使用していると思う - それは、ダウンロード中version.pyが言うのダウンロードフォルダが1.0.1と言う私は、Mac OS 10.7.2を実行しているよ。。。)
環境をより詳しく記述してください。どのWebサーバーを使用していますか? Python 2.6.6 x64、Django 1.3.0、pysandbox 1.0.3では、django内部サーバ(manage.py runserver)との例外なく動作します。 – utapyngo
@utapyngo私はいくつかの情報を追加しました。私は、今日後で非マスターpysandboxブランチを試みます。 – fgm2r
少なくとも、完全な詳細なエラーメッセージを貼り付けてください。 –