2011-12-25 106 views
1

我正在使用gearman来同步不同服务器上的数据。我们有1主服务器以及例如10个本地服务器。让我描述一种可能的情况。比方说,齿轮工人开始工作,5个工作完成,5台服务器上的数据被同步。当下一份工作开始时,比如说,我们失去了与服务器的连接,现在它不可用。通过齿轮工的逻辑,它一次又一次地重试。所以剩下的工作(对于服务器7,8,9,10)将不会执行,直到第六个工作没有完成。最好的解决办法是推迟工作并将其放到队列的末尾并继续工作7-10。如何推迟/推迟Gearman工作?

如果有人知道如何做到这一点,请张贴方式。

PS:我正在使用python。

回答

0

Gearman作业可以并行或串联运行。您应该使用并发作业(每个服务器一个),而不是使用单个作业。

0
GearmanClient.submit_multiple_jobs(jobs_to_submit, background=False, wait_until_complete=True, max_retries=0, poll_timeout=None) 

此功能将有所帮助。让背景=真。

This link也会有帮助。

+0

在这种情况下,进程将被阻止,不是吗? – megido 2012-02-13 12:45:12

+1

是的,我只是给你方法submit_multiple_jobs的例子。如果你设置background = True,你可以转到代码的下一行。 – dennisyuan 2012-02-23 03:52:50