在这段代码中,我只是从队列中拉出来并在无限循环中处理消息。 所以,我通过API弹出基于REST的队列,解析消息,然后通过Twilio发送短信,并一次又一次地无限地执行。 我考虑到了规模,所以我想最大限度地利用时间,让每个脚本同时运行几次。
如何将此代码转换为同时运行4次,而不必执行该文件四次。
.....
var = 1
while var == 1 : # This constructs an infinite loop
try:
queue = CHECKQ.queue("name_of_queue")
msgs = queue.get(max=1, timeout=None)
url = msgs['messages'][0]['body']
msgId = msgs['messages'][0]['id']
delMsg = queue.delete(msgId)
number = "1"+url
message = client.messages.create(to=number, from_="+15555555555",
body="Here's the link to install the controller -
http://someapp.com")
except (IndexError):
sleep(1)
答案 0 :(得分:0)
我使用了一个与多处理混合的无限循环,这是一个启动新子进程而不是线程的库。
我开发了2个脚本/模块sendTxtMsg()和getWorkOffQueue()。
#!/usr/bin/env python
from lib.python.imports import *
client = TwilioRestClient()
def sendTxtMsg():
try:
work = getWorkOffQueue()
number = json.dumps(work["phoneNumber"])
message = client.messages.create(to=number, from_="+15555555555",
body="Here's the link to install the controller -
http://some.awesome.app/jelly")
phonenumbersInsert(json.dumps(work))
except(TypeError):
pass
print "Nothing on Queue"
except Exception as e:
print e
log1.info(e)
并将它们组合成下面的一个模块,它同时执行工作流程多次,实质上是从一个机构的代码中抽出许多手臂和手来排队。
#!/usr/bin/env python
from multiprocessing import Process
from lib.python.imports import *
def goGetEm():
x = 1
while x == 1:
sendTxtMsg()
if __name__ == '__main__':
Process(target=goGetEm).start()
Process(target=goGetEm).start()
Process(target=goGetEm).start()
Process(target=goGetEm).start()