如何防止对资源(如USB设备)的并发访问?

2024-05-29 03:02:20 发布

您现在位置:Python中文网/ 问答频道 /正文

我希望能够使用来自多个应用程序的USB设备(例如,我运行一个flaskweb应用程序),确保一次只有一个使用它。在

在我的情况下,我用继电器来开门/关门。开门大约需要20秒。在此期间,继电器不应被激活,因为这将锁定在中间的门。在

提前谢谢!在


Tags: 应用程序情况继电器usbflaskweb关门
3条回答

您可以将变量添加到配置中(确保其大写)

app.config['YOUR_GLOBAL'] = 'your global'

http://flask.pocoo.org/docs/config/

不完全是对你的问题的回答,但可能是另一个关于如何使用全局变量来解决这个问题的想法。在

你为什么不写一个小程序来控制你的USB设备呢。此脚本在服务器上运行一次(一个实例),并按照您需要的方式负责与设备的通信。它还处理并发性。在

现在,通过管道、套接字(不管使用这个脚本什么)与web应用程序通信,向它发送命令并从中接收结果。在

你有很多可能的解决办法。在

posix_ipcsysv_ipcPython模块提供一个命名信号量类。您可以将信号量初始化为1,并让所有web进程在向USB设备发送命令时获取该信号量。在

使用文件锁可以实现某种类似的机制,可能使用fcntl.lockf。在

另一种完全不同的方法是在web服务器进程和usbapi之间放置一个新进程。此进程公开一个API,该API接收来自web服务器工作线程的请求,并通过单线程进程将这些请求隐式序列化到USB设备中。在

相关问题 更多 >

    热门问题