Python瓶贴请求 - 担心同时运行2个函数[重复]

问题描述 投票:0回答:1

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

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

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

我担心,当调用调度函数(每5分钟)运行时,也会调用处理短信的回发函数。我们两个都在同一时间运行,并且两者都试图同时从阵列中读取。或者如果函数a从列表中读取WHILE函数b正在写入列表。

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

我查看了与芹菜的异步请求,但这并没有解决问题。每隔5分钟运行一次的函数仍然可以调用与调用celery函数完全相同的时间,从而破坏列表。

谢谢,我只是困惑

python flask
1个回答
0
投票

您的担忧是合理的,应该用代码处理。

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

Are lists thread-safe?

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

1)使用锁来保护列表:Python threading. How do I lock a thread?

2)重新考虑该方法,并将访问此特定列表的所有逻辑仅放入计时器。然后,每当有文本消息进入时,您将信息推入队列并从该队列读取到计时器中。这使两个线程分离。来自另一个问题的示例(该问题解决了另一个有趣的问题,但您可以只查看队列使用情况):Threading in python using queue

© www.soinside.com 2019 - 2024. All rights reserved.