我已经构建了一个我在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?