我想使用pysandbox來允許用戶在我的服務器上運行代碼。我使用Django的內部服務器(manage.py runserver命令)這個請求處理程序:如何在Django請求處理程序中使用pandandbox?
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。)
請詳細描述您的環境。你使用什麼網絡服務器? 在Python 2.6.6 x64,Django 1.3.0和pysandbox 1.0.3上,它沒有任何例外的django內部服務器(manage.py runserver)。 – utapyngo
@utapyngo我添加了一些信息。今天晚些時候我會嘗試一個非主要的pandandbox分支。 – fgm2r
至少你應該粘貼完整詳細的錯誤信息... –