Я пытаюсь создать очередь, которая будет возвращать обработанную HTML вызывающей стороне в Python. Сейчас у меня есть много процессов, которые выполняются одновременно (в пуле), и я бы хотел, чтобы они вызывали функцию так, чтобы URL-адрес каждого процесса был помещен в очередь, чтобы они могли обрабатывать один из них. затем возвращаем (или возвращаемся?) получателю с результатом и возобновляем оставшуюся работу.
Моя первоначальная идея - создать файл с именем Render.py, который будет работать основной функцией (например, в то время как l oop) и отображает URL, когда в очереди есть что-то, и также будет функция enqueue (url), которая может ставить ссылку в очередь в очередь. Так что каждый процесс может поставить в очередь URL-адрес, вызвав Render.enqueue (url) и, надеюсь, получить обработанный HTML этого URL-адреса.
Render.py:
import time
import asyncio
queue = []
def enqueue(url):
queue.append(url)
async def crawl():
# do rendering
result = await HTML_RENDERING(url) # some rendering things going on here
return result
if __name__ == "__main__":
max_phantoms = 2
while True:
if (len(queue) > 0):
url = queue.pop(0)
yield with crawl(url) # not sure yield to go back to caller
time.sleep(5)
Код других процессов :
import Render
# ...
result = Render.enqueue(url) # how to get the result?
# ...
Я думаю, что он очень похож на монитор, но я не уверен, как начать.