1 回答

TA貢獻(xiàn)1824條經(jīng)驗(yàn) 獲得超6個(gè)贊
您正在運(yùn)行的任務(wù)的性質(zhì)是什么?
任務(wù)是在一天中的預(yù)定時(shí)間運(yùn)行,還是每 X 分鐘運(yùn)行一次?為此,您可以讓您的 Web 應(yīng)用程序注冊 cronjobs 或類似的,并且每個(gè) cronjob 可以產(chǎn)生您的腳本的一個(gè)實(shí)例,我認(rèn)為它是短期運(yùn)行的,以一次一個(gè)用戶執(zhí)行自動(dòng)化任務(wù)。如果腳本的確切時(shí)間無關(guān)緊要,那么您可以在一天中分散運(yùn)行這些腳本,如果需要,可以在單獨(dú)的機(jī)器上運(yùn)行。
上述方法可能無法很好地?cái)U(kuò)展到 10,000 個(gè)用戶,并且您將需要更強(qiáng)大的東西,特別是如果腳本需要連續(xù)運(yùn)行(例如,您正在從 Facebook 輪詢一些數(shù)據(jù)并需要對其更改做出反應(yīng))。如果每個(gè)用戶需要進(jìn)行大量通信,那么您可以考慮使用生產(chǎn)者-消費(fèi)者模型,其中一組生產(chǎn)者腳本(連續(xù)運(yùn)行)將工作請求發(fā)送到一個(gè)全局隊(duì)列中,由一組消費(fèi)者腳本輪詢并執(zhí)行。您還可以在多臺(tái)機(jī)器上對此類消費(fèi)者和生產(chǎn)者進(jìn)行負(fù)載平衡。
當(dāng)然,您肯定希望通過在多個(gè)線程或進(jìn)程上執(zhí)行這項(xiàng)工作來從機(jī)器的額外內(nèi)核中擠出一些并行性。您可以使用多處理模塊在 Python 中輕松完成此操作。
添加回答
舉報(bào)