python-3.x 每N秒向不同的API端点发送请求[已关闭]

zpjtge22  于 2023-01-06  发布在  Python
关注(0)|答案(2)|浏览(193)
    • 已关闭**。此问题为opinion-based。当前不接受答案。
    • 想要改进此问题吗?**请更新此问题,以便editing this post可以用事实和引文来回答。

14小时前关门了。
Improve this question
我使用的API有大约30个端点,并且我设置了向每个端点发送请求的频率。对于某些端点,这是几秒钟,有些是几小时。我想实现调用每个API端点的python应用程序(并且执行一些代码),其中N对于每个端点可以不同。如果当第二个呼叫开始时一个呼叫仍在进行中,则应该将该请求添加到队列(或类似的东西)中,并在第一个请求完成之后执行。
用python实现这个的正确方法是什么?
我对RabbitMQ有一些经验,但我认为对于这个问题来说,那可能是矫枉过正。

ibps3vxo

ibps3vxo1#

你说 “在第一个程序完成后执行”,所以它是一个单线程程序。
只需使用def()创建一些函数,然后逐一执行即可。
例如

import time

def task1(n):
    print("Task1 start")
    time.sleep(n)
    print("Task1 end ")

def task2(n):
    print("Task2 start")
    time.sleep(n)
    print("Task2 end ")

task1(5) #After 5sec, task1 end and execute task2
task2(3) #task2 need 3sec to execute.
igetnqfo

igetnqfo2#

您可以通过以下方式构建代码:
1.存储每种查询类型的URL、方法和参数。字典会很好:{“查询1”:{“网址”:“/a”,“方法”:“GET”,“参数”:无},“查询2”:{“url”:“/B”,“method”:“GET”,“parameters”:“c”}}但是你可以用任何你想要的方式来做这件事,如果需要的话包括一个数据库。
1.在某处存储查询类型和间隔之间的关系。同样,你可以用case语句,或者用dict(可能和你以前用的一样),或者数据库中的间隔列来实现这一点。
1.每隔N秒,将相应的查询条目推送到队列(queue.put)

  1. HTTP客户端库(例如请求)连续运行,从队列中移除元素,运行HTTP请求,并且当它获得结果时,它移除随后的元素。
    当然,如果您的代码要跨多个节点分布以实现可伸缩性或高可用性,那么您将需要一个分布式队列,如RabbitMQ、Ray或类似队列。

相关问题