uWSGI支持可配置数量的锁,你可以用来同步worker进程。0号锁(Lock 0) (zero) 始终是可用的,但是你可以通过 locks 选项添加更多的锁。如果你的应用有大量的关键块,那么一次又一次地持有释放相同的锁会大量耗费性能。

  1. def use_lock_zero_for_important_things():
  2. uwsgi.lock() # Implicit parameter 0
  3. # Critical section
  4. uwsgi.unlock() # Implicit parameter 0
  5.  
  6. def use_another_lock():
  7. uwsgi.lock(1)
  8. time.sleep(1) # Take that, performance! Ha!
  9. uwsgi.unlock(1)