1

我正在使用带有烧瓶的戏剧。在 Dramatiq 中,我有一个将文件发送到谷歌驱动器的功能。但有一个问题。

如果我只调用一次 Dramatiq 函数并自己等待结果,直到所有文件都传送到谷歌驱动器,那就没问题了。

但问题是,如果我多次调用我的 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

我尝试使用 '''block true''' 获取结果,但它会导致块 I/O。如何做到异步?

谢谢

4

1 回答 1

0


您可以使用文档中显示的管道,message_with_options(pipe_ignore=True)如果您不需要上一个作业的结果
https://dramatiq.io/cookbook.html#pipelines
如果任务不需要按顺序运行,则可以使用,但只需运行 1 个时间也许速率限制会有所帮助
https://dramatiq.io/cookbook.html#rate-limiting

于 2022-02-20T19:32:23.580 回答