Python windows上运行的CherryPy服务器出现随机锁定错误

Python windows上运行的CherryPy服务器出现随机锁定错误,python,locking,cherrypy,Python,Locking,Cherrypy,我正在使用基于文件的会话运行CherryPy服务器。当我在mac上运行服务器时,它工作正常,但当我在windows机器上运行时,我遇到了问题 我有一个web应用程序,它在页面加载时向服务器发出许多GET请求(~50)。通常在一个或多个请求中,我会在服务器上收到下面的错误消息。每次的GET请求都不相同,这似乎是随机的。有时它加载时没有任何问题 14-07-2015 10:42:16 : INFO : (CP Server Thread-81) : (_cplogging )

我正在使用基于文件的会话运行CherryPy服务器。当我在mac上运行服务器时,它工作正常,但当我在windows机器上运行时,我遇到了问题

我有一个web应用程序,它在页面加载时向服务器发出许多GET请求(~50)。通常在一个或多个请求中,我会在服务器上收到下面的错误消息。每次的GET请求都不相同,这似乎是随机的。有时它加载时没有任何问题

14-07-2015 10:42:16 : INFO    : (CP Server Thread-81) : (_cplogging          ) : 127.0.0.1 - - [14/Jul/2015:10:42:16] "GET /static/scripts/jquery-2.1.4.min.js HTTP/1.1" 500 823 "http://127.0.0.1:8099/" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.132 Safari/537.36"
14-07-2015 10:42:16 : INFO    : (CP Server Thread-80) : (_cplogging          ) : 127.0.0.1 - - [14/Jul/2015:10:42:16] "GET /static/scripts/moment.js HTTP/1.1" 304 - "http://127.0.0.1:8099/" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.132 Safari/537.36"
14-07-2015 10:42:16 : INFO    : (CP Server Thread-84) : (_cplogging          ) : 127.0.0.1 - - [14/Jul/2015:10:42:16] "GET /static/scripts/jquery.datetimepicker.js HTTP/1.1" 500 823 "http://127.0.0.1:8099/" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.132 Safari/537.36"
14-07-2015 10:42:16 : ERROR   : (CP Server Thread-81) : (_cplogging          ) : [14/Jul/2015:10:42:16]  
Traceback (most recent call last):
  File "C:\Python34\lib\site-packages\cherrypy\lib\lockfile.py", line 127, in _unlock_file
    msvcrt.locking(self.fp.fileno(), msvcrt.LK_UNLCK, 1)
PermissionError: [Errno 13] Permission denied

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Python34\lib\site-packages\cherrypy\_cprequest.py", line 104, in run
    hook()
  File "C:\Python34\lib\site-packages\cherrypy\_cprequest.py", line 63, in __call__
    return self.callback(**self.kwargs)
  File "C:\Python34\lib\site-packages\cherrypy\lib\sessions.py", line 797, in close
    sess.release_lock()
  File "C:\Python34\lib\site-packages\cherrypy\lib\sessions.py", line 554, in release_lock
    self.lock.release()
  File "C:\Python34\lib\site-packages\cherrypy\lib\lockfile.py", line 92, in release
    self._unlock_file()
  File "C:\Python34\lib\site-packages\cherrypy\lib\lockfile.py", line 129, in _unlock_file
    raise UnlockError(self.fp.name)
cherrypy.lib.lockfile.UnlockError: Unable to unlock 'C:\\Users\\user\\PycharmProjects\\my-project\\sessions\\session-3c95d3c281e1dff3fad8e059fa4115922262b390.lock'
14-07-2015 10:42:16 : ERROR   : (CP Server Thread-81) : (_cplogging          ) : [14/Jul/2015:10:42:16]  
Traceback (most recent call last):
  File "C:\Python34\lib\site-packages\cherrypy\lib\lockfile.py", line 127, in _unlock_file
    msvcrt.locking(self.fp.fileno(), msvcrt.LK_UNLCK, 1)
PermissionError: [Errno 13] Permission denied

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Python34\lib\site-packages\cherrypy\_cptree.py", line 144, in release_serving
    req.close()
  File "C:\Python34\lib\site-packages\cherrypy\_cprequest.py", line 506, in close
    self.hooks.run('on_end_request')
  File "C:\Python34\lib\site-packages\cherrypy\_cprequest.py", line 114, in run
    raise exc
  File "C:\Python34\lib\site-packages\cherrypy\_cprequest.py", line 104, in run
    hook()
  File "C:\Python34\lib\site-packages\cherrypy\_cprequest.py", line 63, in __call__
    return self.callback(**self.kwargs)
  File "C:\Python34\lib\site-packages\cherrypy\lib\sessions.py", line 797, in close
    sess.release_lock()
  File "C:\Python34\lib\site-packages\cherrypy\lib\sessions.py", line 554, in release_lock
    self.lock.release()
  File "C:\Python34\lib\site-packages\cherrypy\lib\lockfile.py", line 92, in release
    self._unlock_file()
  File "C:\Python34\lib\site-packages\cherrypy\lib\lockfile.py", line 129, in _unlock_file
    raise UnlockError(self.fp.name)
cherrypy.lib.lockfile.UnlockError: Unable to unlock 'C:\\Users\\user\\PycharmProjects\\my-project\\sessions\\session-3c95d3c281e1dff3fad8e059fa4115922262b390.lock'
14-07-2015 10:42:16 : ERROR   : (CP Server Thread-84) : (_cplogging          ) : [14/Jul/2015:10:42:16]  
Traceback (most recent call last):
  File "C:\Python34\lib\site-packages\cherrypy\lib\lockfile.py", line 127, in _unlock_file
    msvcrt.locking(self.fp.fileno(), msvcrt.LK_UNLCK, 1)
PermissionError: [Errno 13] Permission denied

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Python34\lib\site-packages\cherrypy\_cprequest.py", line 104, in run
    hook()
  File "C:\Python34\lib\site-packages\cherrypy\_cprequest.py", line 63, in __call__
    return self.callback(**self.kwargs)
  File "C:\Python34\lib\site-packages\cherrypy\lib\sessions.py", line 797, in close
    sess.release_lock()
  File "C:\Python34\lib\site-packages\cherrypy\lib\sessions.py", line 554, in release_lock
    self.lock.release()
  File "C:\Python34\lib\site-packages\cherrypy\lib\lockfile.py", line 92, in release
    self._unlock_file()
  File "C:\Python34\lib\site-packages\cherrypy\lib\lockfile.py", line 129, in _unlock_file
    raise UnlockError(self.fp.name)
cherrypy.lib.lockfile.UnlockError: Unable to unlock 'C:\\Users\\user\\PycharmProjects\\my-project\\sessions\\session-3c95d3c281e1dff3fad8e059fa4115922262b390.lock'
我已经检查过,3c95d3c281e1dff3fad8e059fa4115922262b390是存储在浏览器中的cookie的值


你知道为什么会发生这种情况,以及我如何解决它吗?

我只能说,在一定程度的并发性下,你的Mac可能也会出现问题。如前所述,CherryPy文件会话锁定已中断。不难假设Windows锁定也存在高并发性问题。对于*尼克斯来说,它是固定的,但它不会很快出现。同时,您可以切换到memcached内置后端或。谢谢。我想使用文件会话的唯一原因是,如果服务器重新启动,我就不会忘记哪些会话处于活动状态。我将尝试看看是否有办法定期将活动会话列表保存到文件中,然后在加载时将这些会话放入内存。Redis默认情况下是持久的,因此您可以按原样使用。但是请注意,如果运行多个CherryPy实例,则需要在Redis中实现会话锁定,或者确保一致地将用户路由到实例。