使用芹菜输出到文件

2024-09-27 00:18:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我尝试使用芹菜输出到多个文件。任务非常简单:

  • 获取一些数据和文件路径
  • 将该数据附加到文件路径(如果文件不存在,则创建该文件)

我不想每次都打开/关闭文件句柄,因为在许多情况下,我都会写入同一个文件。所以我做了一个简单的FileHandlePool。在

但是,运行时我注意到,对于每个线程/实例,celeri将生成一个新的FileHandlePool!所以,我有被重写的文件。在

处理这种情况的最好方法是什么?是否可以让m FileHandlePool与主线程处于同一范围内,并让其他celeri线程访问它?在

谢谢!在


Tags: 文件数据实例方法路径情况句柄线程
2条回答

如果我不想让一个单独的服务(在Celery之外)同步到文件,那么在Celery中实现这一点的方法是将一个单工作池(并发性为1的池)绑定到只接受文件写入任务的特定队列。这样任务以串行方式运行,并且在编写时不会出现任何争用条件。在

或者,正如您最初建议的那样,您可以将CELERYD_池模式更改为使用线程,然后将文件句柄引用存储在任务实例上,以便可以从不同的工作线程访问它。我假设文件句柄是线程安全的。在

这个池子似乎没有被芹菜线共用。理想的方法是将写入文件的任务分配给一个进程,所有芹菜线程都应该通过队列写入该进程。在

相关问题 更多 >

    热门问题