Flask芹菜:事件同步类型

2024-05-20 21:29:31 发布

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

我有非常独特的行为,我需要实现与芹菜。我理解不建议将任务块设置为所有,但是我认为这是必要的,正如我在下面描述的那样。伪代码:

Task 1:
Set event to false
Start group of task 2
Scrape website every few seconds to check for changes
If changes found, set event

Task 2:
Log into website with selenium.
Block until event from Task 1 is set
Perform website action with selenium

我希望task2能够为多个用户并行执行多次。因此,在task2的每个实例中检查网站的更新将导致大量对网站的请求,这是不可接受的

对于这样的正常流程,我希望使用task1在一个组中启动登录任务,并在满足执行操作任务的条件后启动另一个组。但是,web操作是时间敏感的,我不想重新打开一个新的selenium实例(这将首先破坏使用此结构的目的)

我见过这样的例子:Flask Celery task locking但是对于这个应用程序来说,使用Redis缓存似乎是不必要的(而且它不需要是原子的,因为“锁”只由task1修改)。我还研究了Celery's remote control,但我不确定是否有能力在收到信号之前阻止

有一个类似的问题here通过将我想要阻止的任务拆分为两个单独的任务来解决,但我同样不能这样做


Tags: to实例eventtask网站seleniumwithwebsite
1条回答
网友
1楼 · 发布于 2024-05-20 21:29:31

芹菜任务本身可以将任务排队,因此可以等待“it's 9am”之类的事件,然后生成一系列并行任务。如果您需要在完成一组并行任务时启动一个附加任务(即,如果您需要在完成所有扇出任务时启动一个扇入任务),则需要的机制是chords

相关问题 更多 >