Python 烧瓶后请求 - 担心同时运行 2 个函数



我有一个python函数,每次我给一个特定的数字发短信时都会被调用。(回发函数,在烧瓶上运行,侦听传入的短信。

我还有一个函数,它有一个设定的时间表,每 5 分钟运行一次,从列表中读取并删除一些条目。

现在唯一的问题是这两个函数从同一个列表中读取。

我担心当调用计划函数(每 5 分钟)运行时,也会调用处理短信的回发函数。我 它们都同时运行,并且都尝试同时从数组中读取。或者,如果函数 a 从列表中读取,而函数 b 正在写入列表。

这是我的准确担忧吗?这两个函数可以同时调用吗?或者永远不会发生它们同时从同一列表中读取的情况。

我研究了芹菜的异步请求,但这并不能解决问题。每 5 分钟运行的函数仍然可以与调用芹菜函数完全相同,从而损坏列表。

谢谢,我只是很困惑

您的担心是合理的,应该在代码中处理。

一般来说,列表在 python 中是线程安全的,但如果列表中的数据不是,这仍然会导致问题,请参阅以下答案:

列表是线程安全的吗?

您描述的问题类型非常常见,根据您的需求可以通过多种方式解决:

1) 使用锁来保护列表: Python 线程。如何锁定线程?

2)重新考虑方法,并将访问此特定列表的所有逻辑放入计时器中。然后,每当收到短信时,您都会将信息推送到队列中,并从该队列读取到计时器中。这会分离两个线程。另一个问题的例子(这个问题解决了另一个有趣的问题,但你可以看看队列用法本身):使用队列在python中线程化

最新更新