Python flask post请求担心两个函数同时运行

2024-05-22 09:36:55 发布

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

我有一个python函数,每当我输入一个特定的数字时,它就会被调用。(Postback函数,在flask上运行,并侦听传入的sms。你知道吗

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

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

我担心的是,当调度函数(每5分钟一次)被调用以运行时,处理sms的postback函数也会被调用。我所知道的是,它们都在同一时间运行,并且都试图同时从数组中读取数据。或者如果函数a从列表中读取数据,而函数b正在向列表中写入数据。你知道吗

这是我的担心吗?这两个函数可以同时调用吗?或者他们不会同时从同一个列表中读取数据。你知道吗

我研究了芹菜的异步请求,但这并不能解决问题。每5分钟运行一次的函数仍然可以在调用芹菜函数的同一时间被调用,从而损坏列表。你知道吗

谢谢,我只是糊涂了


Tags: 数据函数flask列表条目数字数组时间表
1条回答
网友
1楼 · 发布于 2024-05-22 09:36:55

你的担心是合理的,应该在代码中处理。你知道吗

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

Are lists thread-safe?

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

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

2)重新考虑方法,将访问此特定列表的所有逻辑放入计时器。然后,每当一条短信进来,你就把信息推到一个队列中,然后从队列中读取到计时器中。这将使两个线程解耦。另一个问题的例子(这个问题解决了另一个有趣的问题,但您可以只看队列使用本身):Threading in python using queue

相关问题 更多 >