Форум сайта python.su
Всем привет ткните что курить…
Необходимо послать на сервер параллельно множество запросов в кратчайшее время..
from multiprocessing import Process, Lock
from time import *
import pycurl
import urllib
import random
def sendtrnx():
xmlrpc_header = [
"User-Agent: PycURL XML Test", "Content-Type: text/xml"
]
c = pycurl.Curl()
url = "https://blabla.bla/"
c.setopt(c.URL, url)
c.setopt(c.PROXY,"PROXY") #proxy settings
c.setopt(c.PROXYPORT,3128) #proxy port
c.setopt(c.PROXYUSERPWD,"user:pass")
c.setopt(c.WRITEDATA,file1)
c.setopt(c.NOPROGRESS,0)
c.setopt(c.SSL_VERIFYPEER, 0)
c.setopt(c.SSL_VERIFYHOST, 1)
c.setopt(c.HTTPHEADER, xmlrpc_header)
c.setopt(c.POSTFIELDS,stroka)
c.setopt(c.POSTFIELDSIZE,len(stroka))
c.perform()
for i in range(1,3):
param1=random.randrange(1,6,1)
param2=random.randrange(6,6600000,1)
stroka="""
<Message id="%s" version="1.0">
<XMLRequest>%s</XMLRequest>
</Message>
"""%(param1,param2)
def f(l,i):
l.acquire()
sendtrnx()
l.release()
if __name__ == '__main__':
lock = Lock()
for num in range(2):
Process(target=f,args=(lock,num)).start()
Офлайн
Зачем вам Lock() если необходимость в параллельном выполнении?
Офлайн
Взял из примера.Может есть какие то примеры,схожие с моим.?
Я чесно говоря даже не могу четко понять алгоритм действий
Офлайн
Уберите из кода строчки l.acquire() и l.release().
И будет вам счастье )
Офлайн
спасибо…
еще вопрос..
а как реализовать многопоточную отсылку запроса?sendtrnx…
еслу убрать acquire и release…то уникально
for i in range(1,3):
param1=random.randrange(1,6,1)
param2=random.randrange(6,6600000,1)
Офлайн
Поместите этот код внутрь sendtrnx
Офлайн
Возможно сам сервер будет отвергать множество одновременных запросов. Это надо учесть.
Офлайн