我正在使用带烧瓶的dramatiq。在戏剧性的我有一个功能,发送文件到谷歌驱动器。但有一个问题。
如果我只调用dramatiq函数一次,然后自己等待结果,直到所有文件都被交付到谷歌驱动器,这是可以的。
但问题是,如果我多次调用我的dramatiq函数,在dramatiq完成时没有等待——这会导致dramatiq再次调用并发送函数时没有等待结果的情况。如何防止这种行为?如果另一个不完整,我怎么能指示戏剧化不调用函数?需要等待完整的戏剧化的第一个电话然后再打另一个吗?但是异步
我的功能是:
@dramatiq.actor(store_results=True)
def my_actor(credentials, loan_number, id_folder):
print('start')
g = GoogleApi(credentials)
directory = os.path.join(UPLOAD_FOLDER_MAIN + "/" + str(loan_number))
for i in list_of_files:
g.upload_file(i, id_folder)
return True
我尝试将get result与"block true"一起使用,但它会导致阻塞I/O。如何实现异步?
谢谢
您可以使用文档中显示的管道
如果您不需要上一个作业的结果,则可以使用message_with_options(pipe_ignore=True)
https://dramatiq.io/cookbook.html#pipelines
如果任务不需要有序,但一次只运行1个,则速率限制可能会有所帮助
https://dramatiq.io/cookbook.html#rate-限制