我有一个提供 C 代码编辑器的 django web 应用程序,文本被发送到托管在另一台服务器中的另一个 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)
这就是在第二个 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()
但问题仍然存在
我一直在寻找解决方案,但我发现的唯一解决方案是关于使用事务的数据库
感谢您的帮助