Cコードエディターを提供するdjangoWebアプリがあります。テキストは、別のサーバーでホストされている別のdjangoアプリケーションに送信され、.cファイルにコードを書き込んでコンパイルして応答を返します。
問題は、ファイルの書き込みとコンパイルにより、アプリケーションが複数のユーザーで使用されている場合に競合状態の問題が発生することです。
これは私がデータを送信する方法です:
def comp(request):
encoded_data = urllib.urlencode(request.POST)
url = urllib2.urlopen('http://serverIpadress/compile/?' + encoded_data)
tml = url.read()
return HttpResponse(tml)
これは、2番目のdjangoアプリでデータが処理される方法です
def compile(request):
data2=urllib.urlencode({'': request.GET.get('content','')})
request.encoding ='koi8-r'
data=request.GET.get('content','')
handle=open('/home/user/file.c','r+')
handle.write(request.GET['content'])
handle.close()
res = commands.getstatusoutput('gcc -Wall /home/user/file.c -o /home/user/file;home/user/file')
return HttpResponse(res)
私はセマフォを使用することを試みました
sem = threading.BoundedSemaphore()
sem.aquire()
writing to file
compiling
sem.release()
しかし、問題は解決しません
私は解決策を探しましたが、私が見つけたのはトランザクションを使用するデータベースに関するものだけです
助けてくれてありがとう