我正在使用codeigniter版本2.0.3.我正在尝试使用更新查询后获取受影响的行数
$this->db->affected_rows
Run Code Online (Sandbox Code Playgroud)
即使没有更新行,它也总是返回1.我试过了
mysql_affected_rows()
Run Code Online (Sandbox Code Playgroud)
如果查询失败,则返回-1;如果没有更新记录,则返回0.
编辑包括我的代码
我正在使用
$country_id = $this->input->post('country_id');
$time=$this->input->post('time');
$insert_array = array(
'country' => $this->input->post('name')
);
$this->db->update('country_master', $insert_array, array("country_id" => $country_id,"last_updated"=>$time));
$afftectedRows=$this->db->affected_rows();
Run Code Online (Sandbox Code Playgroud) 我正在使用芹菜2.5.3和django芹菜 - 2.5.5.我正在使用mysql作为经纪人.
这是一个场景,当用户请求我在工作组中排队从另一个站点获取数据的作业时.这可能需要几分钟,具体取决于数据的大小.一旦作业开始,我们必须显示加载器图像.当工人完成下载数据(将采用html格式)时,我必须用检索到的数据替换加载器图像.
我们使用芹菜的原因是有时脚本需要超过30秒来完成和超时.
目前我打算使用ajax调用来检查作业的状态,这个函数将以固定的间隔使用.
我经历过一些问题,这就是我提出的问题
为了启动worker,我正在使用这段代码
def testCelery(request):
result=testadd.apply_async()
return HttpResponse(str(result.task_id))
Run Code Online (Sandbox Code Playgroud)
这会将task_id返回给客户端并使用ajax我将向服务器发送请求以检查作业是否已完成
def getStat(request,task_id):
res = AsyncResult(task_id)
s=res.ready()
if s==True:
return HttpResponse(str(res.get()))
else:
return HttpResponse(str(s))
Run Code Online (Sandbox Code Playgroud)
我不确定这是否是正确的方法,或者它在实时场景中的表现如何.
请指教.
编辑:使用djcelery视图检查状态
好吧,我修改了我的代码,因为bruno建议现在看起来像
from djcelery import views as celery_views
def getStat(request,task_id):
return celery_views.is_task_successful(request, task_id)
Run Code Online (Sandbox Code Playgroud)
它似乎正在发挥作用.并且仍然使用task_id的ajax调用来检索状态.
我怎样才能将django请求对象传递给芹菜工人.当尝试传递请求对象时,它会抛出一个错误
Can't Pickle Input Objects
Run Code Online (Sandbox Code Playgroud)
似乎celery序列化传递给worker的任何参数.我尝试使用其他序列化方法,如JSON.
CELERY_TASK_SERIALIZER = "JSON"
Run Code Online (Sandbox Code Playgroud)
但它没有用.
是否可以配置芹菜,以便它不会序列化数据.或者我可以在传递给worker之前将请求对象转换为字符串,然后再转换回worker中的对象.
提前致谢...
我有文字框
<input type="text" name="extraQty0" class="extraEvent" value="1"/>
Run Code Online (Sandbox Code Playgroud)
使用以下代码
$(".extraEvent").live('keyup',function(){
alert('test');
});
Run Code Online (Sandbox Code Playgroud)
这不起作用但如果我使用'click'而不是'keyup',警报将起作用.可能有什么不对?
我创建了一个extjs表单,它使用列布局分为两部分,其中包含大约10-15个输入元素.如何根据条件一次禁用所有这些输入元素.目前我已经创建了一个函数,它可以获取表单中的所有组件,并通过每个元素使用ext.each循环来禁用它们
这是我使用的功能
function prepare_form_view(form){
var f=Ext.getCmp(form);
var els=f.query('component');
Ext.each(els,function(o){
var xtype=o.getXType();
if(xtype=='textfield'||xtype=='combobox'||xtype=='datefield'||xtype=='textareafield'||xtype=='button'){
o.disabledCls='myDisabledClass';
o.disable();
}
});
}
Run Code Online (Sandbox Code Playgroud)
是否有任何替代方法,以便我可以禁用所有元素而不循环遍历每个元素.我也希望将此功能与其他形式一起使用.我正在寻找像'setFieldDefult'这样的功能.
celery ×2
python ×2
python-2.7 ×2
codeigniter ×1
elements ×1
extjs ×1
extjs4 ×1
forms ×1
jquery ×1
live ×1