Celery-Redis工作人员在Heroku

时间:2016-07-25 06:31:50

标签: python heroku flask redis celery

我已经构建了一个我在Heroku上托管的Flask应用程序,Celery作为Redis作为Broker的工作者,并且用于在Redis上保存后端,具有以下代码:

def create_csv_group(orgi,mx):
    # Write a csv file with filename 'group'
    cols = []
    maxx = int(mx)+1
    cols.append(['SID','First','Last','Email'])
    for i in range(0,int(mx)):
        cols.append(['SID'+str(i),'First'+str(i),'Last'+str(i),'Email'+ str(i)])
    with open(os.path.join('uploads/','groupfile_t.csv'), 'wb') as f:
        writer = csv.writer(f)
        for i in range(len(max(cols, key=len))):
            writer.writerow([(c[i] if i<len(c) else '') for c in cols])


@app.route('/mark',methods=['POST'])
def mark():
    task = create_csv_group.apply_async(args=[orig,mx])
    tsk_id = task.id

如果我尝试访问变量tsk_id,有时它会给出错误:

在初始化之前使用的变量。

我认为在访问tsk_id之前它没有将任务发送到队列的原因。所以我在两个表单填充页面之后移动了该函数。

但现在,它没有正确更新/保存文件,它在文件中显示奇怪的输出(似乎是旧文件数据,应该在填写新表单时更新)。当我在本地运行相同的代码时,它运行得非常好。我记录了工作人员,它进入任务功能,也正常运行。

为什么显示这个奇怪的输出?如何解决这两个问题,以便正确写入文件并检查任务ID?

0 个答案:

没有答案