Python 使用芹菜输出到文件
我正在尝试使用芹菜输出到多个文件。任务非常简单:Python 使用芹菜输出到文件,python,multithreading,celery,Python,Multithreading,Celery,我正在尝试使用芹菜输出到多个文件。任务非常简单: 获取一些数据和文件路径 将该数据附加到文件路径(如果文件不存在,则创建该文件) 我不想每次都打开/关闭文件句柄,因为在许多情况下我会写入同一个文件。所以我做了一个简单的FileHandlePool 然而,当运行时,我注意到对于每个线程/实例,芹菜将生成一个新的FileHandlePool!所以,我有被覆盖的文件 处理这种情况的最佳方法是什么?是否可以让m FileHandlePool与主线程在同一范围内,并让其他芹菜线程访问它 谢谢 这个池似
- 获取一些数据和文件路径
- 将该数据附加到文件路径(如果文件不存在,则创建该文件)
谢谢 这个池似乎没有被芹菜线程共享。理想的方法是将写入文件的任务分配给单个进程,所有芹菜线程都应该通过队列写入该进程 如果我不想让一个单独的服务(芹菜之外)同步到文件,我在芹菜中实现这一点的方法是将一个工作池(并发性为1的池)绑定到只接受文件写入任务的特定队列。这样,任务可以连续运行,并且在编写时不会出现任何竞争条件
或者,正如您最初建议的那样,您可以将CELERYD_池模式更改为使用线程,然后将文件句柄引用存储在任务实例上,以便可以从不同的工作线程访问它。我假设文件句柄是线程安全的。这正是我想要做的。我想我在问题中没有很好地描述它。所以我怎么做呢?我一直在参考教程,你是在线程模式下运行芹菜还是作为单独的进程运行芹菜?我想是线程模式。我正在使用芹菜教程中的基本设置。芹菜默认在工作池中使用单独的进程。您可以使用CELERYD_池配置参数对此进行扩充。请给出一个简短的示例,说明如何将CELERYD_池更改为?