Я пытаюсь создать приложение, которое может как сообщения с несколькими профилями одновременно. Я пытаюсь распараллелить входы в систему и для каждого пользователя, который выполнил лайк постов параллельно, как показано ниже.
with ProcessPoolExecutor() as exe:
bot = Insta()
results = []
for credential in credentials: # go through credentials, login in parallel.
results.append(
exe.submit(bot.login, credential) # Each login takes 15 sec
) # Add status of each process in a list
for result in as_completed(results): # When complete, I call like
if result.result() == 200:
with Pool(4) as p:
resp = p.map(bot.like, urls)
print(resp)
Несмотря на возвращение мне status_code 200, когда я смотрю пост, он не понравился .
Когда я пытаюсь сделать это индивидуально для каждого логина, мне возвращается одно и то же, но на этот раз пост действительно понравился. То есть:
bot = Insta()
resp = bot.login(credential)
if resp == 200:
with Pool(5) as p:
p.map(bot.like, urls)
Может кто-нибудь сказать мне, в чем проблема? Я хотел бы знать, если я делаю что-то не так. Мой похожий метод выглядит следующим образом:
def like(self, url_post):
self._set_id_post(url_post) # id of post
resp = self.session.get(url_post)
self.session.headers = {'user-agent': self.user_agent}
self.session.headers.update({'Referer': url_post})
self.session.headers.update({'X-CSRFToken': resp.cookies['csrftoken']}, )
url = endpoints['like_url'] % self.post_id
time.sleep(random.gauss(6, 1.5))
response = self.session.post(url)
self.session.headers.update({'X-CSRFToken': resp.cookies['csrftoken']})
if response.status_code == 200:
return response.status_code
elif response.status_code == 403:
return response.status_code
elif response.status_code == 400:
return response.status_code