Python服务文件缓存Apache竞争条件
我正在编写一个python服务(pyamf),用户可以通过它访问图像。所有图像都存储在中央服务器上。python服务将在可以通过网络访问服务器的卫星计算机上运行。该服务应按以下方式工作:Python服务文件缓存Apache竞争条件,python,apache,service,race-condition,Python,Apache,Service,Race Condition,我正在编写一个python服务(pyamf),用户可以通过它访问图像。所有图像都存储在中央服务器上。python服务将在可以通过网络访问服务器的卫星计算机上运行。该服务应按以下方式工作: 本地检查文件是否存在,如果存在,请使用它 本地检查文件当前是否正在从服务器传输(file.part存在且大小正在更改)。如果是这样,请等待下载完成,然后使用文件 如果文件不存在且未下载文件,请通过urlretrieve下载该文件 问题在于Apache的多线程。线程同时到达文件存在性检查,因此它们都认为需要下载文
谢谢 我猜它可能是一个线程化的apache,也可能是一个分叉的apache,但是效果是一样的,因为它们正在访问远程资源 这个问题有时被称为“狗堆”问题,它是烧杯缓存库()解决的问题之一。它提供了一个系统,通过该系统,您可以创建一个可调用的对象,该对象“创建”一个新的缓存值,在本例中,如果某个值不存在,则创建一个对应于所获取的某个图像的URL。锁定的使用使得并发线程或进程等待被选为“创建者”的单个进程完成其工作。如果在类似unix的多进程系统上配置,Bicker将使用lockfiles;如果在windows系统上配置,则使用互斥锁
我和本·班格特是《烧杯的内脏》的原作者,他们把它包装起来用于塔架 我猜它可能是一个线程化的apache,也可能是一个分叉的apache,但是效果是一样的,因为它们正在访问远程资源 这个问题有时被称为“狗堆”问题,它是烧杯缓存库()解决的问题之一。它提供了一个系统,通过该系统,您可以创建一个可调用的对象,该对象“创建”一个新的缓存值,在本例中,如果某个值不存在,则创建一个对应于所获取的某个图像的URL。锁定的使用使得并发线程或进程等待被选为“创建者”的单个进程完成其工作。如果在类似unix的多进程系统上配置,Bicker将使用lockfiles;如果在windows系统上配置,则使用互斥锁 我和本·班格特是《烧杯的内脏》的原作者,他们把它包装起来用于塔架