【发布时间】:2018-04-13 22:20:04
【问题描述】:
我有一个问题,我正在用 Elixir 替换预测拨号器。到目前为止,它已经超出了所有人的预期。但是,我面临一个问题。假设所有第三方依赖项都按预期工作,这段代码运行良好,
def perform(phonebook_contacts, ...) do
alias FSModEvent.Connection, as: C
for x <-Enum.chunk(phonebook_contacts, 100, 100, []), y <- x do
unless Telephony.user_balance(account_number) <= 0 do
Task.start_link(fn ->
# some background job to dailout phone number y
end)
# :timer.sleep(1000);
end
...
end
phonebook_contacts 可以是一个包含多达 20 万个数字的列表
我正在使用exq。如果外部因素导致作业失败,当它被重试时,它从列表的开头开始,有没有办法我可以从作业失败的最后一个联系人重试?
假设[12,34,56,78,90…]
如果作业在56 失败,它会再次从12 重新启动,它有办法从78 继续(有点失败),...?或处理此用例的更好方法
曾建议可能将作业的状态存储在 redis 中并从那里重试,但我不知道该怎么做。
【问题讨论】: