Я бы предложил использовать простой микро-каркас python, такой как бутылка. Затем вы отправляете запросы в фоновый процесс через очередь (таким образом, чтобы соединение заканчивалось).
Фоновый процесс будет иметь непрерывный цикл, который будет проверять ваши условия (время и число) и выполнять задание после выполнения условия.
Edit:.
Вот пример веб-сервер, что партии детали перед отправкой их в любой системе массового обслуживания вы хотите использовать (RabbitMQ всегда казалось, усложненной ко мне с Python Я использовал сельдерей и другие, более простые системы массового обслуживания, прежде чем). Таким образом, бэкэнд просто захватывает один «элемент» из очереди, который будет содержать все требуемые 50 запросов.
import bottle
import threading
import Queue
app = bottle.Bottle()
app.queue = Queue.Queue()
def send_to_rabbitMQ(items):
"""Custom code to send to rabbitMQ system"""
print("50 items gathered, sending to rabbitMQ")
def batcher(queue):
"""Background thread that gathers incoming requests"""
while True:
batcher_loop(queue)
def batcher_loop(queue):
"""Loop that will run until it gathers 50 items,
then will call then function 'send_to_rabbitMQ'"""
count = 0
items = []
while count < 50:
try:
next_item = queue.get(timeout=.5)
except Queue.Empty:
pass
else:
items.append(next_item)
count += 1
send_to_rabbitMQ(items)
@app.route("/add_request", method=["PUT", "POST"])
def add_request():
"""Simple bottle request that grabs JSON and puts it in the queue"""
request = bottle.request.json['request']
app.queue.put(request)
if __name__ == '__main__':
t = threading.Thread(target=batcher, args=(app.queue,))
t.daemon = True # Make sure the background thread quits when the program ends
t.start()
bottle.run(app)
Код, используемый для проверки его:
import requests
import json
for i in range(101):
req = requests.post("http://localhost:8080/add_request",
data=json.dumps({"request": 1}),
headers={"Content-type": "application/json"})
Можете ли вы предоставить больше контекста о том, почему вы хотите сделать это (пакетные запросы Снегурочка), и что бы возможные случаи использования? –
Внутренние серверы - это графические процессоры. Следовательно, можно выполнять параллельную обработку намного быстрее, чем выполнять ее последовательно. – ankit